Внедрение зависимости - должна ли зависимость быть одной из переменных класса объекта, в который она вводится? - PullRequest
0 голосов
/ 23 сентября 2010

Все,

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

В моем индексе я создаю объект $view, которыйсодержит различные элементы для отображения в пользовательском интерфейсе.В индексе у меня также есть структура switch($action){}, которая определяет, какие контроллеры require, в зависимости от того, какой элемент пользователь щелкает в меню (и, следовательно, значение $action).Затем я говорю что-то вроде $view=execute($view) на контроллере.Каждая функция execute() (1 на контроллер) заканчивается на return $view;.Идея состоит в том, что я могу сохранить в индексе объект $view, который содержит накопленную информацию, сгенерированную во время сеанса пользователя.

У меня вопрос: нужно ли сделать $view переменной класса каждого контроллера?Я просто хочу передать его через функцию execute(), изменить его внутри функции и вернуть его, измененный.Я не уверен, считается ли это все еще внедрением зависимости, или каковы преимущества его создания или нет, переменная класса классов, которым передается объект.

Спасибо,

JDelage

PS: немного больше кода, чтобы помочь с пониманием:

In Index.php:

require_once("Class_view.php"); // J'ai cree une classe separee pour la vue.
$view=new $view;
$view->addToViewArray("title", "projet JDelage");
(...)
switch($action){  // Creates instances of the appropriate controller under the name $command
(...)
}
$view=$command->execute($view) // Each execute() function of each controller takes $view as a parameter, modifies it, and returns it.

1 Ответ

1 голос
/ 23 сентября 2010

мне нужно сделать $view переменной класса каждого контроллера? Я просто хочу передать его через функцию execute(), изменить его внутри функции и вернуть его, измененный.

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

Я не уверен, что это все еще считается внедрением зависимости, или каковы преимущества его создания или нет переменная класса классов, которым передается объект.

Да, это все еще считается Внедрение зависимости . Я чертовски прост. Все, что вам нужно сделать, это передать зависимости в объект. Как обрабатывается зависимость внутри объекта, не важно. У вас не будет никакого преимущества, сохраняя объект в другом объекте, если он вам не понадобится . На самом деле, это недостаток, потому что это добавляет вздутие живота.

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