【发布时间】:2011-05-19 17:26:59
【问题描述】:
在我想要到达当前控制器的函数中:
$front = Zend_Controller_Front::getInstance();
这仅提供处理程序,但不提供当前控制器。
我将代码从函数更改为控制器内部。 并询问了我从 getInstance 获得的处理程序和 this 的来源
var_dump(get_class($front), get_class($this));
我明白了:
string 'Zend_Controller_Front' (length=21)
string 'IndexController' (length=15)
我怎样才能到达真正启动的前端控制器?
我不能作为参数传递,因为这个函数被使用了万亿次。
【问题讨论】:
-
为了快速,我定义了一个全局变量,在 IndexController init 中我用 $this 设置它。
-
获取一个动作控制器的实例通常不是一个好主意。如果您需要驻留在您的应用程序或库中其他地方可用的动作控制器中的代码,那么该代码可能一开始就应该在您的库中。 takehin 的第二个回答也说明了这一点。
-
我需要一个在控制器中定义的变量,用于创建链接的函数。(href)我应该将此函数绑定到一个类吗?
-
控制器中任何不是动作的方法都应该被标记为protected。控制器中受保护的方法通常是一个标志,您应该将它们分隔在action helper中。
标签: php zend-framework front-controller