2010-09-23 55 views
0

全部,依赖注入 - 必须将依赖关系作为注入对象的类变量之一吗?

我正在写一个php的动态网站,并试图使用依赖注入而不是全局。

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

我的问题是:我需要使每个控制器的类变量为$view吗?我只想通过​​函数传递它,在函数内对其进行修改,并将其返回,修改。我不确定这是否仍然被认为是依赖注入,或者使它成为或不是对象传递到的类的类变量有什么优点。

感谢,

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. 
+0

我失去了你在'$ view = execute($ view)'。你可能会张贴一些示例代码来澄清你的问题吗? – erisco 2010-09-23 16:03:39

回答

1

做我需要做$view每个控制器的类变量?我只想通过​​函数传递它,在函数内对其进行修改,并将其返回,修改。

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

我不知道这是否仍然被认为是依赖注入,还是什么都使得它的到的对象传递的优势或不类的类变量。

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

+0

谢谢Gordon,只是我看到的所有例子都有依赖类作为类变量。 – JDelage 2010-09-23 16:09:02

+0

是的,这是常用的。但基本上,无论何时将某些东西注入某些需要使某些工作起作用的东西,它都称为依赖注入。 – Gordon 2010-09-23 16:17:00