2015-02-02 3 views
1

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

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

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

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

+0

Вы не говорите 'DI', а хотите' _autoload'? Кроме того, пожалуйста, не используйте 'DI', если вам это действительно не нужно. http://www.tonymarston.net/php-mysql/dependency-injection-is-evil.html – Forien

+0

@Forien - Я уже знаю об автозагрузке, и я использую его, но это действительно поможет, поскольку мои классы не позволяют многого гибкости, которая была бы адекватно DI –

+0

Действительно @Forien, вы цитируете Марстона? ¯ \ _ (ツ) _/¯ –

ответ

0

Автор PHP-DI здесь, вы устанавливаете его с Composer?

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

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

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

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

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

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

+0

Большое спасибо за ваш ответ, но я не использую Composer, возможно ли мне интегрировать его непосредственно в мой проект? –

+0

Да, это возможно. Вам необходимо загрузить PHP-DI и загрузить его зависимости (и зависимости этих зависимостей) и зарегистрировать эти классы в своем автозагрузчике. Теперь вы можете понять, почему использование Composer намного проще, возможно, попробуйте;) Также добавьте свои собственные классы в автозагрузчик. –

+0

Начали экспериментировать с композитором и обязательно начнете его использовать :-) Спасибо –