是否有一些可以在helper中使用的替代方法,类似于组件中的启动。实际上我需要在helper方法调用之前设置一些设置,这是基于被调用的方法。所以,我需要检测调用哪个方法并设置我需要的方法,这将在helper方法本身中使用。
cake 2.x
UDPATE
helper的构造函数等同于组件的初始化方法,而不是启动,例如当我把它放在我的帮手
时public function __construct($View, $settings = array()) {
parent::__construct($View);
echo "test";die;
}
并在我的帮助程序列表中包含帮助程序,并打开一个不包含来自该帮助程序的任何方法调用的页面,毕竟我看到test
回显了。但是,只有在有一个类似于组件启动的方法调用时,我才需要回应它,而不是初始化。
由于
答案 0 :(得分:0)
Controller::startup()
不像您所描述的那样工作,无论您是否正在调用组件的方法,都会调用startup()
,因此帮助程序构造函数是与此相似。
无论如何,如果您需要在特定方法调用之前执行某些操作,但不想在方法本身中实现它,那么实现受保护的方法并使用魔术__call
处理程序来执行任何操作需要事先做,并调用实际的方法。
像
这样的东西public function __call($method, $params) {
switch($method) {
case 'foo':
// do something special before _foo()
break;
case 'bar':
// do something special before _bar()
break;
// ...
default:
parent::__call($method, $params);
return;
}
return call_user_func_array(array($this, '_' . $method), $params);
}
protected function _foo($foo, $bar) {
// ...
}
protected function _bar($bar, $foo) {
// ...
}
有关详细信息,请参阅 http://php.net/manual/en/language.oop5.overloading.php 。