Просмотр поста

.
AlkatraZ
╭∩╮ (`-`) ╭∩╮

В идеале, ВСЕ общение модуля с ядром системы идет через DI контейнер.
Есть интерфейсы, которые описывают системный API https://github.com/john-cms/jo ... s/Api
Это есть твои инструкции, ты (как писатель модулей) работаешь только с ними и из DI контейнера требуешь только их https://github.com/john-cms/jo ... p#L33

Почему так, сейчас объясню.

Завтра ядро может поменяться, к примеру вместо Zend использована Симфония. или какой-то самопис.
Но тебя это не будет волновать, тебе достаточно знать, что затребованный тобою интерфейс имеет реализацию. То есть, где-то есть код, который выполняет все инструкции, описанные в интерфейсе.
Абстракция
Для того, чтоб изменить реализацию (к примеру, как было в соседней теме, не устраивает класс BBcode и хочется написать что-то свое), достаточно поменять всего одну строку в конфиге.