看了ThinkPHP5.1完全开发手册,关于钩子和行为的介绍,不是太懂,特别是不知道怎么应用。现在复制网上的例子如下,应该就很好理解了。
如果不明白,可以查看来源网址的介绍。
示例:
下面的例子针对是行为类中只拥有一个行为方法。
# application\test\behavior\BehaviorTest.php
namespace app\test\behavior;
class BehaviorTest
{
public function portal($params) {// 注意,portal函数中的参数自定义,在修改了之后,run方法名就要改为你所定义的了。
echo $params['name']."钩子执行了方法"."
";
}
}
# application\common.php
// 应用公共文件
use think\Hook;
use think\App;
$hook = new Hook(new App());
$hook->portal('portal'); // 在应用公共文件中修改行为的入口方法run改为portal
# application\test\controller\Index.php
namespace app\test\controller;
use think\facade\Hook;
class Index
{
public function index()
{
echo 'start'."
";
// 在触发钩子之前,绑定行为到指定钩子
Hook::add('test_1','app\\test\\behavior\\BehaviorTest');
Hook::add('test_2','app\\test\\behavior\\BehaviorTest');
// 调用设置了钩子的函数来触发钩子,进行测试
$this->test_1();
$this->test_2();
}
public function test_1() {
// 设置钩子test_1
Hook::listen('test_1',['name'=>'test_1']);
}
public function test_2() {
// 设置钩子test_2
Hook::listen('test_2',['name'=>'test_2']);
}
}
查看来源网址可以学到更多