所有
我在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.
答案 0 :(得分:1)
我是否需要使
$view
成为每个控制器的类变量?我只想通过execute()
函数传递它,在函数中修改它,然后返回它,修改它。
不,如果仅处理它,则不必将其设为类/实例变量。在这种情况下,它不属于控制器的内部状态,这是类/实例变量的用途。
我不确定这是否仍然被认为是依赖注入,或者使它成为传递对象的类的类变量的优点是什么。
是的,它仍被视为Dependency Injection。 DI很简单。您所要做的就是将依赖项传递给对象。如何在对象内处理依赖关系并不重要。如果you ain't gonna need it,将对象保存在另一个对象中没有任何好处。事实上,这是一个缺点,因为它增加了膨胀。