Cakephp组件启动帮手

时间:2014-11-25 17:23:41

标签: cakephp

是否有一些可以在helper中使用的替代方法,类似于组件中的启动。实际上我需要在helper方法调用之前设置一些设置,这是基于被调用的方法。所以,我需要检测调用哪个方法并设置我需要的方法,这将在helper方法本身中使用。

cake 2.x

UDPATE

helper的构造函数等同于组件的初始化方法,而不是启动,例如当我把它放在我的帮手

public function __construct($View, $settings = array()) {
    parent::__construct($View);

    echo "test";die;
}

并在我的帮助程序列表中包含帮助程序,并打开一个不包含来自该帮助程序的任何方法调用的页面,毕竟我看到test回显了。但是,只有在有一个类似于组件启动的方法调用时,我才需要回应它,而不是初始化。

由于

1 个答案:

答案 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