thinkPHP中钩子的两种配置调用方法的详细说明
本文通过实例描述了thinkPHP中钩子的两种配置调用方法。分享给大家参考,如下:
thinkphp的hook行为类是一个很难理解的问题。网上有很多关于thinkphp的hook类的文章。我还根据网上的文章设置了thinkphp的钩子行为。然而根据这些网上的文章,我尝试了十多次都没有成功。然而,我还是没有放弃。最后,我在调整细节和实验的同时实现了钩子行为的设置。以下是我个人的设置经验,在这里和大家分享一下。
个人做了两个设置,全部测试成功。一个简单的观点是,在thinkphp的核心文件中添加了另一个行为类来模仿核心行为类。以下是截图:
我的虚拟主机配置文件夹是D:/think
Thinkphp是一个tp框架文件夹。配置tp框架后,大家应该都知道Library是tp的核心文件夹,行为文件夹是tp的钩子行为文件的核心文件夹。里面有很多行为文件。我只是模仿了这些钩子行为文件,并在里面建立了一个钩子行为文件adBehavior.class.php。内容如下:
?phpnamespace行为;类ad行为{ function run($ arg){//在这个介绍下,run一定要仔细找到Think核心中的Behavior.class.php,并且有这样一句话作为抽象公共函数run($ params);回声“我是一个”。$arg['name']。广告,'。$arg['value']。背书';}}设置好用户定义的钩子行为类后,我们将使用这个钩子行为类来触发钩子行为。说白了` ` hook行为` `其实就是在hook行为类的run方法中触发代码执行。我在这里简单输出了run方法参数的内容,大家可以在应用中自由播放。
以下是促进分配的操作:
解释:这里是主页模块下索引控制器的登录方法
命名空间主\控制器;使用思考\控制器;使用Think \ Hook//引入触发钩子行为的类是类索引控制器扩展控制器{ public function log in(){//这里我设置了一个ad行为的标签。也就是说,给我的自定义adbehavior hook行为类添加一个标识符hook:3360add ('ad ',' behavior \ \ ad behavior ');//第一个是执行标记的名称,第二个参数是行为类hook:3360add的地址(‘test’,‘home \ \ behaviors \ \ test behavior’);//Hook:add('test2 ',' Home \ \ Behaviors \ \ test behavior ');$ param=数组(' name '=' TestBehavior ');$ param2=数组(' LIS '=' LLISTION ');$ param 3=array(' music '=' cangjishkong ');$this-assign('param ',$ param);$this-assign('param ',$ param 2);$this-assign('param ',$ param 3);$ this-display();}}以下是登录模板内容:
!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN ' ' http://www . w3 . org/TR/XHTML 1/DTD/XHTML 1-strict . DTD ' html xmlns=' http://www . w3 . org/1999/XHTML ' head title thinkphp行为扩展和插件挂钩(包括示例)/title meta http-equiv=' content-type ' content=' text/html;charset=utf-8 '/meta name=' description ' content=' hook usage '/headsdyh1如何使用?/h1 {: hook ('ad '、array ('name'=' av ',' value '=' * teacher ')} div 33——3——33333——34分割线。color : # 00ff 00 ' { : hook(' ad '、array ('name'=' mv ',' value '=' Aoi sora先生')}/div div ——3354——3——————333333333333——3。- hook函数的第一个参数是标记的名称,第二个参数是任意的-!-tag函数的第一个参数是标记的名称,第二个参数必须是变量,因为tag函数是由reference传递的参数- divhook函数:{:hook ('test ',array(' name '=' world ')} HR//div tag函数:{:tag('mv ',$param)}hr//divhr/divtag函数:{: tag ('action _ begin ',$ param)}/div/body/html我不会在这里写路径。一般来说,任何了解tp框架的人都知道把模板login.html放在哪里。
关于这个模板的内容,我已经把下面描述的另一种设置hook行为类的方法的内容提前放在这里了。你可以自己测试和调用这个模板。如果按照我的想法设置,我觉得应该是输出:
如何使用?我是一个影音广告,*老师的代言费是——3——3335 . 33333333335苍井空老师代表——354——3354——3354335、3354335、335433、335433、335433、3354发言。分界线是2————33543354——3愚人节35335335、3333、——33、3——3、——3。哦,我这里引用仓先生的角色,你知道的。
不用说,下面是我自己设置行为类的第二种方式。在这里我根据tp框架的手册和网友的网文成功的测试了自己。你可以根据我的想法来设置。只有你配置正确,我觉得不会有太多问题。
1.首先在你的模块下创建一个行为文件夹,然后在行为中创建一个自定义的钩子行为类,必须是xxxBehaviors.class.php格式。
2.其次,在您的模块下的Conf文件夹中添加一个tags.php文件。为什么呢?这是tp的语法。动手吧。当然,你可以自己探索。
这样说可能不够生动。我最好在下面编码。我的描述很差。
先剪个图来表示路径,免得有些同学还被搞糊涂。
解释上面的文件夹。Conf文件夹中的一些tp将自动生成,一些可能需要您创建一个新的,行为文件夹需要您创建一个新的。下面是代码:
在行为文件夹(完整路径d : \ think \ application \ home \ Behaviors \ test behavior . class . PHP)中,我的自定义钩子行为类的内容:
?php/** *由PhpStorm创建。*用户:管理员*日期: 2016/7/17 *时间: 11:02 */命名空间主页\行为;/* *注册钩子行为类,并在run函数中写入要触发的行为* */类测试行为扩展\ think \ behavior { public function run($ arg){ echo '测试行为======下一行是参数br/'。$ arg[' name '];}}在Conf文件夹中(完整路径d : \ think \ application \ home \ Conf \ tags.php,当然这是我的情况),tags.php的内容:
?php/** *卓文峰创作。* user : Administrator * date : 2016/7/17 * time : 10:56 */return array(/' action _ begin '=array(' Home\\ Behaviors \ \ test ',' Home \ \ Behaviors \ \ test '),//一个标记可以有多个行为,只需使用一个数组即可。//如果是3.2.1版,需要改为‘action _ begin’=array(‘home \ \ behaviors \ \ test behavior’,‘home \ \ behaviors \ test behavior’),‘mv’=array(‘home \ \ behaviors \ \)解释上面tags.php文件的内容。我配置了两个行为标识符,“action _ begin”,“mv ”,对应于login.html。你可以回去仔细看看。login.html模板的内容必须包含“action_begin”、“mv ”,这也是tp框架在tags.php设置行为标识符的语法。
还有,请注意:上面我注释的‘action _ begin’其实不适合这个语法。这是在tags.php配置行为识别的其他版本的语法。这里tp里的文档都挺清楚的,就不多说了。如果你的版本和我的不一样,请用上面的语法试试。如果你不能用上面的语法成功地配置它,那么你可能错了。
配置完成后,请再次尝试调用模板login.html。我相信你能得到你想要的配置结果。
这里有一个提醒,请仔细阅读我的评论,可以说包含了很多信息。
接下来,我想谈谈设置监听钩子行为类的两种方法:hook(),tag():
这两个函数是tp内置监听钩子行为类的内置函数,可以在tp框架的函数库functions.php文件中找到。在这里,我们只讨论它们的调用差异,这在login.html的模板文件中已经提到过。我们在这里再解释一遍:
functions.php中两个函数的代码:
/* * *获取和设置配置参数支持批处理定义* @param string|array $name配置变量* @param mixed $value配置值* @ param mixed $默认值* @ return mixed */function hook($ hook,$ params=array()){ \ Think \ hook : listen($ hook,$ params);//侦听一个钩子}/* * *进程标记扩展* @ param string $标记名* @param mixed $params传入参数* @ return void */functiontag ($tag,$ params=null){ \ think \ hook 33603360侦听($ tag,$ params) }这里显示这两个函数内容的原因是为了解释它们的区别:
如果您小心的话,您应该会发现标记函数的$param参数值前面有一个符号。没有错:这个符号是引用变量的地址符号,所以tag函数的$param参数只能是一个变量。请不要怀疑。如果不是变量可以测试一下,呵呵。
两者的区别在于hook可以引用任何参数,而tag只能引用变量的参数
在上面的tags.php文件中,我在每个标签行为后面重复配置了testBehavior自定义类,以便证明一个标签也可以对应多个行为类。如果您成功地配置了它,当您运行login.html时,您必须发现根据测试行为设置,登录被执行了两次。
最后,总结一下:
其实我想说的是,tp框架的hook行为类无非是在特定的地点和时间提升某个行为,被广泛使用,所以我认为是这样的。例如,如果你想在模板中放一个广告,你可以简单地为我设置它。
然后,简要介绍tp行为的参考步骤:
第一步是配置自己的行为类,这是毋庸置疑的。
其次,触发行为,你必须在你的自定义行为类的运行中设置它,并在这里实现任何行为。运行方法是您配置行为的地方。
然后,是配置tags.php的行为标识。这里可以按照上面的格式进行配置。当然,你有没有仔细发现,我在IndexController.class.php上面多写了几行代码:
//第一个是执行标记的名称,第二个参数是行为类hook:3360add的地址(‘test’,‘home \ \ behaviors \ \ test behavior’);其实这里是动态添加行为标识的代码,也就是说钩子行为的标签行为,也就是标识也可以动态添加,大家可以试试。
最后是监听行为,指的是标记方法或者钩子方法,在这里可以传入参数,也可以不传入,这取决于你想做什么。您可以在模板上或其他地方监视监视行为。比如控制器的方法,这里就不举例了。你可以自己试试。我在模板里举例子的原因是看效果。毕竟,如果你没有看到你想要的结果,你就不能证明你的实验是一个成功的实验。
顺便说一句,我很粗心。如果写的有错误,请指出来,或者自己补脑子,呵呵。
更多对thinkPHP感兴趣的读者,请查看本网站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《smarty模板入门基础教程》、《PHP模板技术总结》、0103010。
希望本文对基于ThinkPHP框架的PHP编程有所帮助。
版权声明:thinkPHP中钩子的两种配置调用方法的详细说明是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。