beforeFilter中初始化为AppController属性的对象是否在调用beforeRender之前被销毁


Does objects initialized to a property of AppController in beforeFilter get destroyed before beforeRender is called?

我正试图将Facebook集成到我的一个cakeHP2应用程序中,我在beforeFilter中初始化了Facebook类,如下所示:

public function beforeFilter(){
    $this->Facebook = new Facebook(array(
        'appId'  => 'myappid98a232466',
        'secret' => 'myappsecret8e06342c5',
    ));
}

稍后在beforeRender中,当我尝试访问Facebook的方法时,我得到了一个胎儿错误:调用非对象上的成员函数getLoginUrl()

public function beforeRender(){
    $this->set('fbLoginUrl', $this->Facebook->getLoginUrl());
}

beforeRender()上的$this->Facebook的值被设置为null。为什么物体会被破坏?

beforeFilter未运行

很可能在没有调用父类的子类中定义了beforeFilter。因此,AppController中的beforeFilter不会运行,并且从未设置该属性。修复者:

class FoosController extends AppController {
    public function beforeFilter() {
        ...
        parent::beforeFilter(); // added
    }
}