Как использовать контейнер IoC ?? Я не понимаю - PullRequest
0 голосов
/ 16 октября 2010

Вот что я знаю до сих пор:

  • DI позволяет мне создавать повторно используемые компоненты, проверяемые модулем

  • DI многословен, потому что это требуетчто я явно устанавливаю зависимости (через конструктор или метод. Хотя я все еще не понимаю внедрение интерфейса).Вот почему нужен контейнер или локатор службы.

  • Контейнер лучше, чем локатор службы, поскольку классы не должны знать о его существовании.

Но я обнаружил следующие проблемы:

  • Некоторые классы теперь будут зависеть от контейнера?Если я не использую конфигурацию по умолчанию для каждого класса, как описано в моем файле служб, некоторые классы должны будут вызывать контейнер для повторной настройки необходимого объекта.

  • На странице79 из этого слайда http://www.slideshare.net/fabpot/dependency-injection-with-php-53, Фабьен Потенсьер сказал, что Контейнер не управляет всеми объектами, только объектами с одним экземпляром (но не синглетонами).Я еще больше запутался.

Любая помощь очень ценится.=) * * Тысяча тридцать одна

1 Ответ

0 голосов
/ 16 октября 2010

Некоторые классы теперь будут зависеть от контейнера?

Нет. Вот почему вы используете внедрение зависимостей, а не местоположение службы.

На стр. 79 из этого слайда ...

См. Стр. 82, где написано "В отличие от модельных объектов". Честно говоря, я бы никогда не объяснил это так («Объекты только с одним экземпляром (! = Singletons)» либо неверны, либо что-то очень специфичное для PHP, это не относится к внедрению зависимостей или контейнерам IoC + DI в целом), но Держу пари, что он пытался объяснить, что контейнер обычно управляет сервисными вещами, а не модельными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...