【发布时间】:2009-05-20 05:29:47
【问题描述】:
是否可以在zend框架中调用另一个控制器的成员函数,如果可以,那么如何?
<?php
class FirstController extends Zend_Controller_Action {
public function indexAction() {
// general action
}
public function memberFunction() {
// a resuable function
}
}
这是另一个控制器
<?php
class SecondController extends Zend_Controller_Action {
public indexAction() {
// here i need to call memberFunction() of FirstController
}
}
请解释我如何从第二个控制器访问 memberFunction()。
解决方案
更好的想法是定义一个 AppController 并让所有常用的控制器扩展 AppController,从而进一步扩展 Zend_Controller_Action。
class AppController extends Zend_Controller_Action {
public function memberFunction() {
// a resuable function
}
}
class FirstController extends AppController {
public function indexAction() {
// call function from any child class
$this->memberFunction();
}
}
现在 memberFunction 可以从扩展 AppController 的控制器中调用,作为简单继承规则。
【问题讨论】:
-
仅供参考,当我需要通用功能时,我绝对更喜欢设置共享类或模块。但是,我在使用 ZF2 时遇到了一种情况,在这种情况下,使用在其他几个控制器上扩展的父 AppController 会很有帮助。您的解决方案效果很好。在 ZF2 中,您设置:"class AppController extends AbstractActionController" 和子控制器将是相同的:"class FirstController extends AppController" 我知道有更好的方法可以做到这一点,我可能应该重新考虑一些应用程序结构,但它可以工作。跨度>
标签: php zend-framework