CakePHP控制器中的__call()函数?

cod*_*rex 2 php cakephp magic-methods

__call()CakePHP的控制器中有功能吗?我在Zend Framework中使用了这个函数.

class UsersController extends AppController {
    function home(){
        /*some action*/
    }

    function __call($m, $p){
        print_r($m);
        print_r($p);
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到这样的错误:

UsersController中缺少方法

<?php

class UsersController extends AppController {

 var $name = 'Users';


 function somemethodsnotincontoller() {

 }

}
?>
Run Code Online (Sandbox Code Playgroud)

对于URL site.com/users/somemethodsnotincontoller

nei*_*kes 6

正如许多人在此指出的那样,__ call()是一种本机PHP5语言"魔术"方法,用于捕获对不存在的类方法的调用.

然而,蛋糕的核心(我认为这是调度员)检查是否该方法调用前先存在,如果它不它呈现失踪方法错误.

一个解决方案可能是您创建自己的AppError类,并在那里处理"catch all"方法.

错误处理下的烹饪书中的信息量有限