Вот это переопределение определенных частей стороннего модуля полнейший тупняк. При использовании кучи сторонних модулей и компонентов и глобальном использовании переопределений, событий и тп. проект превращается в полную свалку, а когда разрастается то этот весь мусор будет прилично тормозить дело. Не говоря уже о том, что если зайдет новый разработчик в проект, как долго он будет разбираться в этой тонне конфигов.
За время пока я отписывал вопросы по каждому чиху на форме, изучал каждый бит символа в коде yii2, решая достаточно редкие и интересные задачи, я понял, что практически все готовые сторонние модули, которые предлагают разработчики годятся только для создания простого проекта, самого простого.
Все доки и примеры типа "Пишем просто блог на yii2" или "Пишем просто магазин на yii2", показывают написание "Hello World", так как в 99% случаях обладают только 1% нужного функционала.
За время практики я столкнулся со следующими проблемами сторонних модулей. Для примера давайте разберем любой модуль пользователей на гите, берем самый первый модуль в поиске по запросу "Yii2 users" -
https://github.com/amnah/yii2-user
Проблема номер 1
Если необходимо добавить свой функционал, нужно создавать 100500 контейнеров, переопределять модели, добавлять методы, переопределять контроллеры добавлять экшины, переопределять виды (тоесть уже обязательно нужно использовать тему) и др.
Проблема номер 2
Есть экшин авторизации
https://github.com/amnah/yii2-user/blob ... er.php#L70, была такая у меня задача в сфере сетевого маркетинга, что нужно было сделать следующее: Пользователь покупает фин. пакет и для него регистрируется 10 аккаунтов (все аккаунты на его почту с его паролем). Тоесть авторизоваться можно на 10 аккаунтов под одними и теме-же данным. Вкратце делаем префиксы к email (1|
a@mail.ru, 2|
a@mail.ru, 3|
a@mail.ru) и при авторизации выдаем лист аккаунтов, чтобы пользователь выбрал под каким зайти. Сделано для того, что бы потом пользователь мог их продавать. Так вот, мне нужно перед авторизацией пропустить username через фильтр, а после авторизации сделать определенные действия.
Тут конечно спасают события, а что если событий нет в нужном месте ? И задача редкая и автор не захочет добавить событие чисто для тебя.
Тоесть нужно будет переопределять целый экшин, из-за одной строчки?
Проблема номер 3
С темой отдельная история, если пользоваться твигом, то всплывает вот такой баг
https://github.com/yiisoft/yii2/issues/7984. Я точно не могу сказать всплывет ли эта проблема, если файлы видов в модуле на php, а вы используете твиг, тема может не подхватить. Далее необходимо перекрывать переводы, если нужно добавить или изменить фразы на свои и выходит, чтобы костомизировать модуль нужно хорошо попотеть и сделать свалку конфигов, переопределений и еще 1 слой непонятно чего.
Проблема 4
Порог вхождения. Когда в проекте свалка из 10 000 DI, 100500 событий, разбросов файлов видов и переводов, попробуйте объяснить новому разработчику весь этот поток.