безопасность никак не связана с CI, все что недостаточно из коробки можно подключить через composer. Серьезный проект это понятие относительное, для кого то пару миллионов товаров обыденное дело, для кого то очень серьезно.
DDD это сперва пишем код, затем используем базу и инфраструктуру, основа домен все остальное вторично.
SOLID это прежде всего хорошие практики написания которые обеспечат поддержку кода.
это, попытка отделения кода апи функционала (бизнес логика) от код клинтского (шаблоны,стили, скрипты,контроллеры) чтобы апи использовать в разных реализациях клиента, не спорю возможно это попахивает DDD.
ок если DTO то данные должны быть с учетом вложенных элементов DTO (агрегат), например если отдаем DTO\Order , то он должен содержать DTO\OrderItem, DTO\Client, DTO\Producer
, то есть должен какой то способ собрать DTO объект для ответа, это куча кода по сборке DTO, это лишние запросы к хранилищу.
Опять же если мне нужен просто DTO\Order без вложенных элементов?
в данном случае у в вас все равно вызов будет идти не напрямую а через класс посредник, который будет определять язык сайта, и обращаться к источнику хранения текста, а это может быть хоть класс как в вашем случае хоть массив, ini и тд
А смысл вам одни и те же товары прогонять через ЧПУ с фильтрами? Вы на один раздел каталога можете создать кучу страниц а на весь сайт будет сотни тысяч, поисковики смогут ли осилить это?