2012-04-19 4 views
0

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

Я думаю, что я отвечал на много информации, чтобы быть читаемыми ... но если вы хотите особенности есть here.

Кроме того, если это не чрезмерно усложнять проблему, я могу использовать Factory Pattern для всех зависимостей инъекции? - Особенности указаны в ссылке выше.

+0

У вас есть взгляд на контейнеры DI для современных фреймворков PHP, таких как ZF2 и Symfony2, или библиотеки DI, такие как Pimple или Crafty? –

ответ

2

Ну, да.

Весь смысл инъекции зависимостей абстракция, дать функции/методу/объекту/классу, что ему нужно, и заставить его работать внутри него. Фабрика для генерации объектов и переменных для передачи DI отлично.

Например:

public function pdo_select(PDO $pdo_connection, $table, $where_condition) 

Здесь мы передаем все, что нужно, объект подключения, имя таблицы и пункт WHERE MySQL. Мы можем далее абстрактную эту функцию, выполнив:

public function pdo_query(PDO $pdo_connection, $query) 

Теперь мы не ограничиваемся наша функция просто выбора, мы можем сделать все виды запросов.

Но вы видите, что вы определенно можете передавать объекты в разные функции для работы.

Передача объектов также дает вам приятное прикосновение к типу типа hinting, который будет вызывать ошибку, если введен другой параметр, помогающий вам отлаживать.

+0

@TheAllFoo Объекты передаются на функции и методы как переменные, где вы застреваете? –