GVKun编程网logo

thinkPHP中钩子的两种配置调用方法详解(thinkphp钩子插件)

13

此处将为大家介绍关于thinkPHP中钩子的两种配置调用方法详解的详细内容,并且为您解答有关thinkphp钩子插件的相关问题,此外,我们还将为您介绍关于PHP编程:ThinkPHP静态缓存简单配置和

此处将为大家介绍关于thinkPHP中钩子的两种配置调用方法详解的详细内容,并且为您解答有关thinkphp钩子插件的相关问题,此外,我们还将为您介绍关于PHP编程:ThinkPHP静态缓存简单配置和使用方法详解、ThinkPHP 模板引擎使用方法详解、ThinkPHP中limit()使用方法详解、ThinkPHP中limit()使用方法详解_PHP的有用信息。

本文目录一览:

thinkPHP中钩子的两种配置调用方法详解(thinkphp钩子插件)

thinkPHP中钩子的两种配置调用方法详解(thinkphp钩子插件)

本文实例讲述了thinkPHP中钩子的两种配置调用方法。分享给大家供大家参考,具体如下:

thinkPHP的钩子行为类是一个比较难以理解的问题,网上有很多写thinkPHP钩子类的文章,我也是根据网上的文章来设置thinkPHP的钩子行为的,但根据这些网上的文章,我在设置的过程中,尝试了十几次都没有成功,不过,我还是没有放弃,最后还是在一边调节细节,一边试验的过程中实现了钩子行为的设置。下面是我个人的设置经验,在这里跟大家分享一下。

个人做了两种设置,都试验成功了,一个简单点,在thinkPHP的核心文件中模仿核心行为类添加了另一个行为类,下面是截图:

我的虚拟主机配置文件夹是D:/think

ThinkPHP是tp框架文件夹,配置过tp框架应该都知道Library是tp放核心文件的文件夹,Behavior文件夹则是tp的钩子行为类文件的核心文件夹,里面放置着很多行为类文件,我只是模仿这些钩子行为类文件在里面建了一个钩子行为类文件adBehavior.class.PHP,内容如下:

rush:PHP;"> PHP namespace 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控制器的登录方法

'testBehavior'); $param2=array('LIS'=>'LLISTION'); $param3=array('music'=>'cangjingshikong'); $this->assign('param',$param); $this->assign('param',$param2); $this->assign('param',$param3); $this->display(); } }

下面是login模板内容:

rush:PHP;"> Think<a href="https://www.jb51.cc/tag/PHP/" target="_blank">PHP</a> 行为(Behavior)扩展以及<a href="https://www.jb51.cc/tag/chajian/" target="_blank">插件</a>(Plug or Hook)详解(含实例)

How to used?

{:hook('ad',array('name'=>'AV','value'=>'*老师'))}
————————————————分割线1——————————————————
'MV','value'=>'苍井空老师'))}
————————————————分割线2——————————————————
hook函数:{:hook('test',array('name'=>'World'))}
tag函数:{:tag('mv',$param)}

tag函数:{:tag('action_begin',$param)}

这里的路径我就不写了吧,一般对tp框架了解的人都知道,这个模板login.html放在哪里。

关于这个模板的内容,我已经提前把下面要讲述的另一种设置钩子行为类方法的内容也放在这里了,大家可以自行测试一下调用这个模板,如果你跟着我的思路设置了,我想它应该会输出:

rush:xhtml;"> How to used? 我是一条AV广告,*老师代言

————————————————分割线1——————————————————
我是一条MV广告,苍井空老师代言
————————————————分割线2——————————————————

呵呵,这里引用苍老师的作用,你懂的。

废话不多说,下面是第二种自己设置行为类的方法,这里我是根据tp框架的手册以及诸位网友的网文自己测试成功了的,大家按照我的思路设置就行了。只有你配置对了,我想应该不会出现太多问题。

1、首先在你的模块下面建一个文件夹Behaviors,再在Behaviors里面创建自定义的钩子行为类,钩子行为类必须是xxxBehaviors.class.PHP的格式。

2、其次在你的模块下面的Conf文件夹中新增一个文件tags.PHP。 为什么要这样,这是tp的语法,你照做就行了,当然你自己也可以探究一下。

这样子说或许还不够形象,下面我还是上代码吧,本人描述比较差。

先截个图显示路径吧,免得有的同学还是摸不着头脑。

解释一下上面的文件夹,Conf文件夹有的tp会自动生成,有的可能要你新建,Behaviors文件夹则是要你新建的,下面还是上代码:

在Behaviors文件夹里面(完整路径D:\think\application\Home\Behaviors\testBehavior.class.PHP)我自定义的钩子行为类的内容:

rush:PHP;"> PHP /** * Created by PHPStorm. * User: Administrator * Date: 2016/7/17 * Time: 11:02 */ namespace Home\Behaviors; /* * 注册钩子行为类,要触发的行为写在run函数里 * */ class testBehavior extends \Think\Behavior{ public function run(&$arg){ echo 'test behavior=====下一行是参数
'.$arg['name']; } }

在Conf文件夹里面(完整路径D:\think\application\Home\Conf\tags.PHP,当然这是我的情况)tags.PHP的内容:

rush:PHP;"> array('Home\\Behaviors\\test','Home\\Behaviors\\test'),//一个标签位可以有多个行为,使用数组即可。 // 如果是3.2.1版本 则需要改成 'action_begin'=>array('Home\\Behaviors\\testBehavior','Home\\Behaviors\\testBehavior'),'mv'=>array('Home\\Behaviors\\mvBehavior','Home\\Behaviors\\mvBehavior') );

解释一下,上面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的代码:

rush:PHP;"> /** * 获取和设置配置参数 支持批量定义 * @param string|array $name 配置变量 * @param mixed $value 配置值 * @param mixed $default 默认值 * @return mixed */ function hook($hook,$params=array()){ \Think\Hook::listen($hook,$params); //监听一个钩子 } /** * 处理标签扩展 * @param string $tag 标签名称 * @param mixed $params 传入参数 * @return void */ function tag($tag,&$params=NULL) { \Think\Hook::listen($tag,$params); }

之所以在这里展示一下这两个函数的内容,是为了解释它们的区别:

细心的你应该发现tag函数的$param参数值里前面带了一个···&···符号,没有错:这个符号就是引用变量的地址符号,所以tag函数的$param参数只能是变量,请不要怀疑,你可以测试一下不是变量的情况,呵呵。

它们的区别也在于此,hook可以引用任何参数,tag只能引用变量的参数

上面那个tags.PHP文件里面我在每个标签行为的后面都重复配置了testBehavior自定义类,是为了证明,一个标签也可以对应多个行为类,如果你配置成功了,那么你运行login.html的时候,肯定发现login根据testBehavior设置的执行了两次。

最后,总结一下:

其实,我想说,tp框架的钩子行为类无非就是为了在某个特定地点,特定时间促发某种行为,这个是应用很广的,本人姑且这么认为。比如,你想要在某个模板植入广告,可以向我这样子简单的设置。

然后,简单的介绍tp行为的引用步骤:

首先第一步,你要先配置好自己的行为类,这是毋庸置疑的。

其次是促发的行为,你必须在你自定义的行为类的run里面设置,在这里实现你的任何行为,run方法就是你配置行为的地方。

然后,就是配置tags.PHP的行为标识了,这里你可以按照上面格式配置,当然,你有没有细心的发现上面的IndexController.class.PHP里面我多写了几行代码:

rush:PHP;"> //第一个是执行标签的名称,第二个参数是行为的类的地址 Hook::add('test',"Home\\Behaviors\\testBehavior");

其实这里是动态添加行为标识的代码,也就是说,钩子行为的标签行为,也就是标识也可以动态添加的,你可以试试。

最后,就是监听行为了,监听行为就是引用tag方法或者hook方法了,在这里你可以传入参数,也可不传,看你想怎么做了。监听行为你可以在模板上监听,也可以在其他地方监听,比如控制器的方法中,这里就不举例了,你可以自己试试,我之所以在模板中举例,完全是为了看到效果,毕竟做实验看不到你要的结果,是证明不了你的实验是个成功的实验的。

多说一句,本人比较粗心,假如有什么 文字错误 还请指出,或者自己脑补 ,呵呵。

更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》及《PHP模板技术总结》。

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP编程:ThinkPHP静态缓存简单配置和使用方法详解

PHP编程:ThinkPHP静态缓存简单配置和使用方法详解

《ThinkPHP静态缓存简单配置和使用方法详解》要点:
本文介绍了ThinkPHP静态缓存简单配置和使用方法详解,希望对您有用。如果有疑问,可以联系我们。

PHP学习本文实例讲述了ThinkPHP静态缓存简单配置和使用办法.分享给大家供大家参考,具体如下:

根据ThinkPHP官方手册:ThinkPHP内置了静态缓存类,通过静态缓存规则定义来实现了可配置的静态缓存.

启用静态缓存:

ThinkPHP官方手册写道

要使用静态缓存功能,需要开启HTML_CACHE_ON 参数,并且在项目配置目录下面增加静态缓存规则文件 htmls.PHP,两者缺一不可.否则静态缓存不会生效.

在配置文件Conf\config.PHP的array()中加上:


'HTML_CACHE_ON' => true,//开启静态缓存
'HTML_PATH' => '__APP__/html',//静态缓存文件目录,HTML_PATH可任意设置,此处设为当前项目下新建的html目录

静态规则定义:

ThinkPHP官方手册写道

静态规则的定义有三种方式:


Return Array(
'ActionName'=>array('静态规则','静态缓存有效期','附加规则'),//第一种
'ModuleName:ActionName'=>array('静态规则',//第二种
'*'=>array('静态规则',//第三种
…更多操作的静态规则
)

第一种是定义全局的操作静态规则,例如定义所有的read操作的静态规则为:


'read'=>array('{id}','60')

其中,{id} 表示取$_GET['id'] 为静态缓存文件名,第二个参数表示缓存60秒.

第二种是定义某个模块的操作的静态规则,例如,我们需要定义Blog模块的read操作进行静态缓存


'Blog:read'=>array('{id}',-1)

第三种方式是定义全局的静态缓存规则,这个属于特殊情况下的使用,任何模块的操作都适用,例如


'*'=>array('{$_SERVER.REQUEST_URI|md5}')
//根据当前的URL进行缓存.

我这里在静态缓存规则文件 htmls.PHP中写:


<?PHP
return array(
'getHtml' => array('{:action}',-1),//-1表示永久缓存
);
?>

上面的静态缓存规则表示定义所有的getHtml操作的静态规则为:


'getHtml'=>array('{:action}',-1)

{:action}表示当前操作名为静态缓存文件名.

同样在\Lib\Action\IndexAction.class.PHP文件中写:


<?PHP
class IndexAction extends Action{
  //在当前项目的html目录下生成getHtml.shtml
  public function getHtml() {
   header('Content-type:text/html;charset=utf-8');
   $this->assign('title','生成html文件');
   $this->assign('info','生成html文件');
   $this->display();
  }
}
?>

在\Tpl\default\index\getHtml.html中写:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
 <head>
  <Meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
  <title>{$title}</title>
 </head>
 <body>
  <h2>{$info}</h2>
 </body>
</html>

然后在浏览器中输入:http://127.0.0.1/myApp/index.PHP/index/getHtml,可看到预期的页面.

刷新页面后,浏览器地址栏会发生变化,如下:

ThinkPHP静态缓存简单配置和使用方法详解

ps:如果用的apache,firefox和opera可能会不支持shtml文件,可以在httpd.conf文件中找到"AddType text/html .shtml","AddOutputFilter INCLUDES .shtml",分别去掉前面的"#"即可.

更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《ThinkPHP常用办法总结》、《smarty模板入门基础教程》及《PHP模板技术总结》.

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所赞助.

小编培训学院每天发布《ThinkPHP静态缓存简单配置和使用方法详解》等实战技能,PHP、MysqL、LINUX、APP、JS,CSS全面培养人才。

ThinkPHP 模板引擎使用方法详解

ThinkPHP 模板引擎使用方法详解

thinkphp系统支持原生的php模板,而且本身内置了一个基于xml的高效的编译型模板引擎,系统默认使用的模板引擎是内置模板引擎,关于这个模板引擎的标签详细使用可以参考模版引擎部分。

ThinkPHP 内置的模板引擎来定义模板文件,以及使用加载文件、模板布局和模板继承等高级功能。

每个模板文件在执行过程中都会生成一个编译后的缓存文件,其实就是一个可以运行的 PHP 文件。

PHP

/*index/controller/example.php*/
 
use think\Controller;
 
class test extends Index {
 
  public function template (){
    $name = &#39;Jerry&#39;;
    $allName = [
      0 => "Jerry", 
      1 => "Tom"
    ];
 
    $this->assign(&#39;nameA&#39;,$name);
    $this->assign(&#39;allName&#39;,$allName);
 
    return $this->fetch(&#39;example&#39;);
  }
}
登录后复制

立即学习“PHP免费学习笔记(深入)”;


HTML

/*index/view/example.html*/
 
<span>{$nameA}</span>
 
{volist name="allName" id="vo"}
 
  <p data-sub="{$key}" data-index="{$i}">{$vo}</p>
 
{/volist}
 
 
Result

<br /><span>Jerry</span>
 
<p data-sub="0" data-index="1">Jerry</p>
 
<p data-sub="1" data-index="2">Tom</p>
登录后复制

立即学习“PHP免费学习笔记(深入)”;

这样 ThinkPHP 便完成了对页面的解析工作,其中涉及到 模板实例化、定位、赋值、渲染及标签的使用。

视图实例化

暂无

模板赋值

显然在在模板中直接使用 $name 是找不到该变量的。必须使用 assign 方法对模板赋值。在执行渲染输出函数前, assign 方法使 函数内部变量与模板变量建立起映射关系。

$this->assign(&#39;name&#39;,$name);
$this->assign(&#39;allName&#39;,$allName);
登录后复制

立即学习“PHP免费学习笔记(深入)”;

通过赋值之后,便可以在模板文件中使用 {$nameA} 来输出该变量了。

模板渲染

当数据已经准备好渲染到页面上,还需要指定 html 文件作为渲染模板,为当前函数执行 fetch 方法时候传入 example 参数。

return $this->fetch(&#39;example&#39;);
登录后复制

立即学习“PHP免费学习笔记(深入)”;

模板标签

在模板文件中使用内置标签可以帮助我们在模板中循环、判断变量。它以一对花括号 {tag} {/tag} 作为开标签和闭标签。 { 与 } 之间必须紧跟标签属性或值,存在 空格 和 换行 都不能在渲染时被解析。

volist 标签就是内置标签中的其中一个,通常用来循环某个数组变量。

{volist name="allName" id="vo"}
 
  <p data-sub="{$key}" data-index="{$i}">{$vo}</p>
 
{/volist}
登录后复制

立即学习“PHP免费学习笔记(深入)”;

allName 是通过模板赋值的变量 ,现在可以在模板上直接使用了,显然它是一个数组, volist 标签对它做了循环操作。

volist 标签常用的一些属性:

propnameid
key数组名当前元素
valueallNamevo

隐藏在 volist 中的有几个内部变量 {$key} {$i} ,分别代表了 数组下标 和 循环次数 。

内置标签

与 volist 一样好用的内置标签还有很多:

<notempty name=""></notempty> //判断数据是否不为空 不为空则执行
登录后复制

立即学习“PHP免费学习笔记(深入)”;

相关推荐:

Node.js使用jade模板引擎步骤详解

node前端开发模板引擎Jade使用步骤详解

node前端模板引擎Jade标签使用详解

立即学习“PHP免费学习笔记(深入)”;

以上就是ThinkPHP 模板引擎使用方法详解的详细内容,更多请关注php中文网其它相关文章!

ThinkPHP中limit()使用方法详解

ThinkPHP中limit()使用方法详解

《:ThinkPHP中limit()使用方法详解》要点:
本文介绍了:ThinkPHP中limit()使用方法详解,希望对您有用。如果有疑问,可以联系我们。

PHP编程本文介绍ThinkPHP的limit()办法的用法.limit办法可以用于对数据库操作的结果进行取指定范围的条数.即相当于是在mySQL查询语句中的limit子句.

PHP编程limit办法也是模型类的连贯操作办法之一,主要用于指定查询和操作的数量,特别在分页查询的时候使用较多.ThinkPHP的l

PHP编程imit办法可以兼容所有的数据库驱动类的.

PHP编程用法一、限制结果数量

PHP编程例如获取满足要求的10个用户,如下调用即可:

PHP编程
 $User = M('User');
  $User->where('status=1')->field('id,name')->limit(10)->select();

PHP编程limit办法也可以用于写操作,例如更新满足要求的3条数据:

PHP编程
  $User = M('User');
  $User->where('score=100')->limit(3)->save(array('level'=>'A'));

PHP编程用法二、分页查询

PHP编程用于文章分页查询是limit办法比较常用的场合,例如:

PHP编程
  $Article = M('Article');
  $Article->limit('10,25')->select();

PHP编程表示查询文章数据,从第10行开始的25条数据(可能还取决于where条件和limit排序的影响 这个暂且不提).

PHP编程在3.1版本后,你也可以这样使用:

PHP编程
  $Article = M('Article');
  $Article->limit(10,25)->select();

PHP编程对于大数据表,尽量使用limit限制查询结果,否则会导致很大的内存开销和性能问题.

PHP编程关于ThinkPHP中limit()的使用办法就给大家介绍这么多,希望对您有所帮助,同时也非常感谢大家对小编网站的支持!

欢迎参与《:ThinkPHP中limit()使用方法详解》讨论,分享您的想法,小编 jb51.cc为您提供专业教程。

ThinkPHP中limit()使用方法详解_PHP

ThinkPHP中limit()使用方法详解_PHP

本文介绍thinkphp的limit()方法的用法。limit方法可以用于对数据库操作的结果进行取指定范围的条数。即相当于是在mysql查询语句中的limit子句。

limit方法也是模型类的连贯操作方法之一,主要用于指定查询和操作的数量,特别在分页查询的时候使用较多。ThinkPHP的l

imit方法可以兼容所有的数据库驱动类的。

用法一、限制结果数量

例如获取满足要求的10个用户,如下调用即可:

立即学习“PHP免费学习笔记(深入)”;

 $User = M(''User'');
  $User->where(''status=1'')->field(''id,name'')->limit(10)->select();
登录后复制

limit方法也可以用于写操作,例如更新满足要求的3条数据:

  $User = M(''User'');
  $User->where(''score=100'')->limit(3)->save(array(''level''=>''A''));
登录后复制

用法二、分页查询

用于文章分页查询是limit方法比较常用的场合,例如:

  $Article = M(''Article'');
  $Article->limit(''10,25'')->select();
登录后复制

表示查询文章数据,从第10行开始的25条数据(可能还取决于where条件和limit排序的影响 这个暂且不提)。

在3.1版本后,你也可以这样使用:

  $Article = M(''Article'');
  $Article->limit(10,25)->select();
登录后复制

对于大数据表,尽量使用limit限制查询结果,否则会导致很大的内存开销和性能问题。

关于ThinkPHP中limit()的使用方法就给大家介绍这么多,希望对您有所帮助,同时也非常感谢大家对网站的支持!

我们今天的关于thinkPHP中钩子的两种配置调用方法详解thinkphp钩子插件的分享已经告一段落,感谢您的关注,如果您想了解更多关于PHP编程:ThinkPHP静态缓存简单配置和使用方法详解、ThinkPHP 模板引擎使用方法详解、ThinkPHP中limit()使用方法详解、ThinkPHP中limit()使用方法详解_PHP的相关信息,请在本站查询。

本文标签: