1

我在 codeigniter 中有一个类,它只处理 ajax。我在此类中创建了一个函数,用于检查引用是否为 ajax 引用,我希望每次使用此类中的任何函数时都能够调用此函数。

因此,我已经实现了__call魔术方法

class Ajax_content extends Controller {

    function __construct()
    {
        parent::Controller();


    }

    function __call($method, $arguments){

            $this->ajaxCheck(); //set up to return false and exit.
            call_user_func_array(array($this,"_".$method),$arguments);

        }

目前ajaxCheck()总是返回falseexit()s。但它没有被调用(目前我的 ajax 请求仍然返回数据)这是解决问题的有效方法吗?

4

2 回答 2

5

每次使用此类中的任何函数时,我都希望能够调用此函数

__call仅在调用不可访问的方法时触发。如果您希望每次调用控制器方法时都执行某些功能(并且我假设您的意思是映射到 Web 请求的方法,而不是类中的任何函数),您应该将此功能放在构造函数中。

于 2010-11-18T16:52:06.573 回答
0

如果您希望一个方法在任何方法之前运行,而不是在 codeigniter 控制器中使用魔术 php __call,您可以对 codeigniter 使用 Remaping 方法

    public function _remap($method)
    {
        // call and start a method before any other method in codeigniter  controller
    }

有关更多信息,请参阅此页面

于 2019-05-20T07:11:59.293 回答