進入laravel的核心檔案 vendor\laravel\framework\src\Illuminate\Routing\Controller.php
查詢到方法 callAction:
原始碼為:
public function callAction($method, $parameters)
{
return calluserfuncarray([$this, $method], $parameters);
}
改成:
public function callAction($method, $parameters)
{
if(methodexists($this,'beforeAction')) calluserfuncarray([$this, 'beforeAction'], ['action' => $method]);
$return = calluserfuncarray([$this, $method], $parameters);
if(methodexists($this,'afterAction')) calluserfuncarray([$this, 'afterAction'], ['action' => $method]);
return $return;
}
那麼在控制器寫,例如:
頁面效果為:
日誌執行順序為:
前置方法與後置方法可以為空。
方法名字建議使用定義常量的方式來檢測。方便後續擴充套件。
寫這個後置是為了,自己準備進行事件繫結,但是不想每個方法去寫,準備寫一個類來設定進行對不同方法,不同監聽事件。