ThinkPHP5 行為和鉤子 03

2021-08-04 22:30:27 字數 1034 閱讀 8624

自定義鉤子

現在我們用乙個應用自定義鉤子的例子來總結下鉤子和行為的使用。

首先定義乙個公共的控制器基類,然後新增乙個 controller_init鉤子,**如下:

<?php

use think\controller;

use think\hook;

use think\request;

class base extends controller

parent::__construct($request);      

}  }

controller_init鉤子位置,然後我們只需要給 controller_init鉤子繫結行為。

index控制器**修改為:

<?php

class index extends base  }

return [

];行為類check定義如下:

<?php

class check}}

在模組的 common.php檔案中新增如下**繫結另外乙個閉包行為,如下:

use think\hook;

hook::add('controller_init',function($controller,$request),

true

);role類的**如下,該類僅用於簡單舉例,並非乙個真正的角色類,所以做了乙個簡單的實現:

<?php

class role

else }}

配置繫結可以和動態繫結混合使用;

鉤子方法傳入第三個引數表示在獲取到返回值後就會不再執行後續行為;

動態繫結行為的方法第三個引數可以讓某個行為優先執行;

完成以上所有的定義和配置後,下面來進行行為測試,訪問url

頁面輸出顯示:

當前使用者角色:guest

然後測試訪問url

?id=1

頁面輸出顯示:

當前使用者角色:admin

訪問url

?id=2

頁面輸出顯示:

當前使用者角色:leader

ThinkPHP5 1鉤子和行為

tp5.1的行為是乙個比較抽象的概念,執行的流程使用者的註冊,登入,退出登入等等都可以作為乙個行為。而不同的行為之間也具有位置共同性,比如,有些行為的作用位置在使用者註冊後,在登入之後,退出登入之後,等等有些行為的作用位置都是在應用執行前,有些行為都是在模板輸出之後,把這些行為發生作用的位置稱之為鉤...

thinkphp5設定專案為restful風格

我用的是thinkphp5.0.16 環境是 lamp linux apache mysql5.6 php5.6 然後下一步也就是第一步,我們先開啟路由完整匹配模式,這個配置在config.php這個檔案裡.路由使用完整匹配 route complete match true,設定成true就可以 ...

thinkphp5 1 框架鉤子和行為用法例項分析

thinkphp中的行為是乙個比較抽象的概念,可以把行為想象成在應用執行過程中的乙個動程式設計客棧作。在框架的執行流程中,例如路由檢測是乙個行為,靜態快取是乙個行為,使用者許可權檢測也是行為,大到業務邏輯,小到瀏覽器檢測 多語言檢測等等都可以當做是乙個行為,www.cppcns.com甚至說你希望給...