1

私は許可システムを構築しており、すべてのコントローラーのすべてのメソッドに細分性を持たせる必要があるため、ベースコントローラーの __call マジックメソッドを使用してこれを実装することを考えていました:

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

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

}

しかし、明らかにこれは Laravel 4 では機能しません。その __call マジック メソッドをエミュレートするための正しいアプローチはどのようになりますか? フィルターの前に考えましたが、呼び出されたメソッド名と引数が渡されません

4

1 に答える 1

4

__callメソッドがクラスに存在しない場合に呼び出される魔法のメソッドです。ですから、それがどのように役立つかわかりません。

現在のルートとリクエストにアクセスできるため、前のフィルターを使用することをお勧めします。

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

});

$route->getAction()次に、呼び出されるコントローラーとメソッドを抽出し$route->getParameters()たり$request->segment()、引数を取得したりするなどのメソッドを使用できます。

このフィルターが適用されたグループ内のすべてのルートを登録するだけです。

Route::group(array('before' => 'permissions'), function()
{
    Route::get('/', function() { });
});
于 2013-06-05T06:03:49.617 に答える