本文实例讲述了thinkPHP中钩子的两种配置调用方法。分享给大家供大家参考,具体如下:
thinkphp的钩子行为类是一个比较难以理解的问题,网上有很多写thinkphp钩子类的文章,我也是根据网上的文章来设置thinkphp的钩子行为的,但根据这些网上的文章,我在设置的过程中,尝试了十几次都没有成功,不过,我还是没有放弃,最后还是在一边调节细节,一边试验的过程中实现了钩子行为的设置。下面是我个人的设置经验,在这里跟大家分享一下。
个人做了两种设置,都试验成功了,一个简单点,在thinkphp的核心文件中模仿核心行为类添加了另一个行为类,下面是截图:
我的虚拟主机配置文件夹是D:/think
Thinkphp是tp框架文件夹,配置过tp框架应该都知道Library是tp放核心文件的文件夹,Behavior文件夹则是tp的钩子行为类文件的核心文件夹,里面放置着很多行为类文件,我只是模仿这些钩子行为类文件在里面建了一个钩子行为类文件adBehavior.class.php,内容如下:
设置好了自定义的钩子行为类之后,我们接下来就要利用这个钩子行为类促发钩子的行为了,```钩子的行为```说白了其实就是促发钩子行为类的run方法里面的代码执行,我这里只是简单的输出run方法参数的内容,在应用中的,大家可以自由发挥。
下面是促发行为的操作:
解释一下:我这里是Home模块下面的IndexController控制器的登录方法
namespace Home\Controller;
use Think\Controller;
use Think\Hook;//引进促发钩子行为的类,是为下面的Hook::add()调用做伏笔的
class IndexController extends Controller {
public function login(){
//这里我设置一个ad行为的标签,也就是给我自定义的adBehavior钩子行为类添加一个促发行为的标识
Hook::add('ad','Behavior\\adBehavior');
//第一个是执行标签的名称,第二个参数是行为的类的地址
Hook::add('test', "Home\\Behaviors\\testBehavior");
//Hook::add('test2', "Home\\Behaviors\\testBehavior");
$param=array('name'=>'testBehavior');
$param2=array('LIS'=>'LLISTION');
$param3=array('music'=>'cangjingshikong');
$this->assign('param',$param);
$this->assign('param',$param2);
$this->assign('param',$param3);
$this->display();
}
}
下面是login模板内容:
ThinkPHP 行为(Behavior)扩展以及插件(Plug or Hook)详解(含实例)
How to used?
{:hook('ad', array('name'=>'AV','value'=>'*老师'))}
————————————————分割线1——————————————————
{:hook('ad', array('name'=>'MV','value'=>'苍井空老师'))}
————————————————分割线2——————————————————