依赖注入 - 依赖项必须是注入它的对象的类变量之一吗?

时间:2010-09-23 14:56:53

标签: php dependency-injection

所有

我在php中编写了一个小动态网站,我正在尝试使用依赖注入而不是全局变量。

在我的索引中,我创建了一个$view对象,其中包含要在UI中显示的各种元素。在索引中,我还有一个switch($action){}结构,根据用户在菜单上单击的项目(以及require的值)来管理哪些控制器到$action。然后我在控制器上说$view=execute($view)之类的东西。每个execute()函数(每个控制器1个)以return $view;结尾。我的想法是,我可以在索引中保留一个$view对象,其中包含用户会话期间生成的累积信息。

我的问题是:我是否需要让$view成为每个控制器的类变量?我只想通过execute()函数传递它,在函数中修改它,然后返回它,修改它。我不确定这是否仍然被认为是依赖注入,或者使它成为传递对象的类的类变量的优点是什么。

谢谢,

JDelage

PS:需要更多代码来帮助理解:

在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 个答案:

答案 0 :(得分:1)

  

我是否需要使$view成为每个控制器的类变量?我只想通过execute()函数传递它,在函数中修改它,然后返回它,修改它。

不,如果仅处理它,则不必将其设为类/实例变量。在这种情况下,它不属于控制器的内部状态,这是类/实例变量的用途。

  

我不确定这是否仍然被认为是依赖注入,或者使它成为传递对象的类的类变量的优点是什么。

是的,它仍被视为Dependency Injection。 DI很简单。您所要做的就是将依赖项传递给对象。如何在对象内处理依赖关系并不重要。如果you ain't gonna need it,将对象保存在另一个对象中没有任何好处。事实上,这是一个缺点,因为它增加了膨胀。

相关问题