本文实例讲述了thinkPHP中钩子的两种配置调用方法。分享给大家供大家参考,具体如下:
thinkphp的钩子行为类是一个比较难以理解的问题,网上有很多写thinkphp钩子类的文章,我也是根据网上的文章来设置thinkphp的钩子行为的,但根据这些网上的文章,我在设置的过程中,尝试了十几次都没有成功,不过,我还是没有放弃,最后还是在一边调节细节,一边试验的过程中实现了钩子行为的设置。下面是我个人的设置经验,在这里跟大家分享一下。
个人做了两种设置,都试验成功了,一个简单点,在thinkphp的核心文件中模仿核心行为类添加了另一个行为类,下面是截图:
我的虚拟主机配置文件夹是D:/think
Thinkphp是tp框架文件夹,配置过tp框架应该都知道Library是tp放核心文件的文件夹,Behavior文件夹则是tp的钩子行为类文件的核心文件夹,里面放置着很多行为类文件,我只是模仿这些钩子行为类文件在里面建了一个钩子行为类文件adBehavior.class.php,内容如下:
<?phpnamespace Behavior;class adBehavior{ function run($arg){//在此介绍下,run必须的 ,细心的会在Think核心找到Behavior.class.php里面有这样一句话 abstract public function run(&$params); echo '我是一条'.$arg['name'].'广告,'.$arg['value'].'代言'; }}
设置好了自定义的钩子行为类之后,我们接下来就要利用这个钩子行为类促发钩子的行为了,```钩子的行为```说白了其实就是促发钩子行为类的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模板内容:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head> <title>ThinkPHP 行为(Behavior)扩展以及插件(Plug or Hook)详解(含实例) </title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="description" content="Hook使用方法" /></head><body><h1>How to used?</h1>{:hook('ad', array('name'=>'AV','value'=>'*老师'))}<div>————————————————分割线1——————————————————</div><div style="font-weight: bold ;color: #00ff00">{:hook('ad', array('name'=>'MV','value'=>'苍井空老师'))}</div><div>————————————————分割线2——————————————————</div> <!--hook函数第一个参数是标签的名称,第二个参数随意--> <!--tag函数第一个参数是标签的名称,第二个一定是变量,因为tag函数是引址传递的参数--><div>hook函数:{:hook('test', array('name'=>'World'))}<hr/></div><div>tag函数:{:tag('mv',$param)}<hr/></div><hr/><div>tag函数:{:tag('action_begin',$param)}</div></body></html>
新闻热点
疑难解答