На мой взгляд, было бы логично описывать конфигурацию приложения в одном месте и в одном стиле. Как-то странно, что Service Locator (компоненты) настраивается через массивы, в декларативном стиле, а DI через прямые вызовы АПИ.
Ну ок, здесь пример с методом renderArticle(). А если я хочу зависимость в конструктор класса? :) __constructor(Interface $model, $configuration = [])? Что бы мне Yii2 подсунул класс, реализующий этот интерфейс.
Дмитрий Энтелис: удалось научить работать Финкс с шардами! Оказывается, можно при работе с миграциями указывать, какие конфиги (файл .yml) нужно использовать. Сделал под каждый шард такой файл. Спасибо за рекомендацию, хорошая библиотека.
Дмитрий Энтелис: это классная штука, но я имел в виду наличие нескольких БД в рамках одного окружения. Мои проекты работают одновременно с несколькими шардами.
Довольно интересная библиотека с большим функционалом из коробки. Почти решился его использовать, но в самый последний момент обнаружил досадную вещь — нет поддержки нескольких БД. Увы.
MaxKondratenko: если сайт свёрстан по БЭМу, никакие левые дивы не смогут сломать вёрстку. В вашем случае, по описанию проблемы, вёрстка едет из-за появления лишних контейнеров. По БЭМу совершенно всё равно какой уровень вложенности имеет контейнер.
Подобная реализация есть, но проблема в том, что я хочу регистрировать события (сообщать наблюдателям, что им пора что-то сделать) не модифицируя код контроллера.
Данила Риджи: подобная реализация есть, но проблема в том, что я хочу регистрировать события (сообщать наблюдателям, что им пора что-то сделать) не модифицируя код контроллера.
Нет, потому что в цепочке наследования может появиться ещё один дочерний класс тоже со своим методом executeComponent(). И тогда он не сможет корректно переопределить его, т. к. нарушит порядок выполнения методов трейта.