Начало работы с PHP-DI без сторонних фреймворков

Я только сейчас обнаруживаю внедрение зависимости и хочу применить его к проекту среднего размера, над которым я работаю. У меня уже есть папка классов, которая содержит все классы, используемые в системе

/ приложение / ядро ​​/ классов

Я хотел бы знать, как я могу настроить PHP-DI, чтобы найти эти классы в соответствии с тем, как они требуются.

заранее спасибо

1 ответ

Решение

Автор PHP-DI, вы устанавливаете его с помощью Composer?

Если да, то настройте вашу папку в composer.json и просто требуют vendor/autoload.php в вашем сценарии. Затем вы можете начать использовать контейнер, он должен просто работать. Например:

$container = \DI\ContainerBuilder::buildDevContainer();

$yourObject = $container->get('YourClass');

Теперь учтите, что этот пример не является внедрением зависимостей (как вы можете видеть, здесь ничего не вводится). Когда вы получаете объект из контейнера ($container->get()) вы связываете свой код с контейнером.

Это нормально делать в корне приложения, например, для создания экземпляров ваших контроллеров (или любых других корневых объектов, которые вы хотите иметь). Но зависимости контроллеров должны быть внедрены, а не извлечены из контейнера (если вы хотите сделать внедрение зависимостей).

Кстати, есть чат, если вы хотите обсудить больше тем: https://gitter.im/mnapoli/PHP-DI и, конечно, документацию.

Другие вопросы по тегам