我有一个动作助手,我通常在控制器中调用它:
public function myAction(){
//some work
$this->_helper->someHelper();
//some other work
}
我对代码进行了更改,以便myAction
现在在类中调用方法myActionWork()
,该方法就是这样做的。
public function myAction(){
SomeClass::myActionWork();
}
myActionWork()
方法是什么工作,所以我把3行放在那里。但是,这些行中的一行是对动作助手someHelper()
的调用。那么我怎样才能在普通类中使用动作助手呢?我可以这样做还是可以解决这个问题?
class SomeClass {
public static myActionWork()
{
//some work
$this->_helper->someHelper();
//some other work
}
答案 0 :(得分:2)
虽然这听起来有点混乱,但你总是可以把助手作为参数传递,例如
class SomeClass {
public static myActionWork(Zend_Controller_Action_Helper_SomeHelper $helper)
{
//some work
$helper->someHelper();
//some other work
}
从你的帮手那里,拨打
SomeClass::myActionWork($this->getActionController()->getHelper('SomeHelper'));
另一种方法是将所需帮助程序静态地从帮助程序代理中拉出,例如
$someHelper = Zend_Controller_Action_HelperBroker::getStaticHelper('SomeHelper');