Laravel 4魔术方法-在控制器中调用替换

Laravel 4魔术方法-在控制器中调用替换,laravel,laravel-4,Laravel,Laravel 4,我正在构建一个权限系统,我需要对每个控制器的每个方法都有粒度,所以我想在我的基本控制器上使用_call magic方法来实现这一点,如下所示: public function __call($name, $args) { if ( $this->checkPermission() ) { call_user_func_array(array($this, $name), $args); } else {

我正在构建一个权限系统,我需要对每个控制器的每个方法都有粒度,所以我想在我的基本控制器上使用_call magic方法来实现这一点,如下所示:

public function __call($name, $args)
{       
    if ( $this->checkPermission() )
    {

        call_user_func_array(array($this, $name), $args);
    }
    else 
    {
        // handle error
    }

}

但显然,这在拉维4中不起作用。如何正确的方法来模拟这种叫做魔术的方法?我以前考虑过过滤器,但它们没有被赋予被调用的方法名和参数

\u调用
是一个神奇的方法,当类中不存在该方法时调用。所以我看不出这对你有什么帮助

我的建议是使用before过滤器,因为您可以访问当前路由和请求

Route::filter('permissions', function($route, $request)
{

});
然后,您可以使用
$route->getAction()
等方法提取将被调用的控制器和方法,并使用
$route->getParameters()
$request->segment()
获取参数

只需在应用此筛选器的组中注册所有路由

Route::group(array('before' => 'permissions'), function()
{
    Route::get('/', function() { });
});

\u call
是一个神奇的方法,当该方法在类中不存在时调用该方法。所以我看不出这对你有什么帮助

我的建议是使用before过滤器,因为您可以访问当前路由和请求

Route::filter('permissions', function($route, $request)
{

});
然后,您可以使用
$route->getAction()
等方法提取将被调用的控制器和方法,并使用
$route->getParameters()
$request->segment()
获取参数

只需在应用此筛选器的组中注册所有路由

Route::group(array('before' => 'permissions'), function()
{
    Route::get('/', function() { });
});

谢谢我被这个答案弄糊涂了stackoverflow.com/questions/3716649/Thank!我被这个答案弄糊涂了stackoverflow.com/questions/3716649/