Я только сейчас обнаруживаю внедрение зависимости и хочу применить его к проекту среднего размера, над которым я работаю. У меня уже есть папка классов, которая содержит все классы, используемые в системе
/ приложение / ядро / классов
Я хотел бы знать, как я могу настроить PHP-DI, чтобы найти эти классы в соответствии с тем, как они требуются.
заранее спасибо
Автор PHP-DI, вы устанавливаете его с помощью Composer?
Если да, то настройте вашу папку в composer.json
и просто требуют vendor/autoload.php
в вашем сценарии. Затем вы можете начать использовать контейнер, он должен просто работать. Например:
$container = \DI\ContainerBuilder::buildDevContainer();
$yourObject = $container->get('YourClass');
Теперь знайте, что этот пример не внедрение зависимости (как вы можете видеть, здесь ничего не вводится). Когда вы получаете объект из контейнера ($container->get()
) вы связываете свой код с контейнером.
Это нормально делать в корне приложения, например создавать экземпляры ваших контроллеров (или любых других корневых объектов, которые вы хотите иметь). Но зависимости контроллеров должны быть введены, а не извлечены из контейнера (если вы хотите сделать внедрение зависимостей).
Кстати, есть чат, если вы хотите обсудить больше тем: https://gitter.im/mnapoli/PHP-DI и конечно документация.
Других решений пока нет …