tp5中行為的出現(xiàn),為我們想在應(yīng)用前后,模型,控制器初始化前后等想做的一些事情提供了便利[這里的行為在早期框架一般稱(chēng)為鉤子, 有些現(xiàn)在的框架稱(chēng)之為中間件].
行為, 就是一些動(dòng)作, 標(biāo)簽位, 就是可以設(shè)置行為的位置;
可以理解為標(biāo)簽位[適合放置地雷的地方]綁定行為[放一顆地雷, 留一根線(xiàn)鏈著標(biāo)簽].
實(shí)際應(yīng)用如下:
1. application\common.php文件中
use think\Hook; Hook::listen("action_init",$params); //在放地雷的位置action_init設(shè)置個(gè)監(jiān)聽(tīng)器, 一旦運(yùn)行到這個(gè)位置, 就拉線(xiàn)2. application\tags.php
return [ // 應(yīng)用初始化 'app_init' => ['app\\index\\behavior\\Test'], //讓監(jiān)聽(tīng)的位置的線(xiàn) 連著 地雷 // 應(yīng)用開(kāi)始 'app_begin' => [], // 模塊初始化 'module_init' => [], // 操作開(kāi)始執(zhí)行 'action_begin' => [], // 視圖內(nèi)容過(guò)濾 'view_filter' => [], // 日志寫(xiě)入 'log_write' => [], // 應(yīng)用結(jié)束 'app_end' => [], ];
3. app\index\behavior文件夾下設(shè)置地雷[行為], 當(dāng)運(yùn)行到action_init, 這里就爆炸了
namespace app\index\behavior; class Test{ public function appInit(&$params){ echo "注意: 地雷要爆炸了,</br>"; if(strpos($_SERVER["HTTP_USER_AGENT"],"MSIE 8.0"))echo "Internet Explorer 8.0"; else if(strpos($_SERVER["HTTP_USER_AGENT"],"MSIE 7.0")) else if(strpos($_SERVER["HTTP_USER_AGENT"],"Opera")) echo "Opera"; else echo $_SERVER["HTTP_USER_AGENT"]; } public function appEnd(&$params) { echo "講話(huà)結(jié)束了,我宣布散會(huì),大家回去休息吧"; } }
Ok, 到這里, 當(dāng)們?cè)跒g覽器中運(yùn)行時(shí), 一定會(huì)經(jīng)過(guò) action_init的位置, 然后就一定會(huì)爆炸了