Thinkphp 框架扩展之标签库驱动原理与用法分析
本文实例讲述了Thinkphp 框架扩展之标签库驱动原理与用法。分享给大家供大家参考,具体如下
在Think\Template
中标签库的体现是采用XML命名空间的方式。每个标签库对应一个标签库驱动类,每个驱动类负责对标签库中的所有标签的解析。
标签库驱动类的作用其实就是把某个标签定义解析成为有效的模版文件(可以包括PHP语句或者HTML标签),标签库驱动的命名空间位于 Think\Template\TagLib
,标签库驱动必须继承Think\Template\TagLib
类,例如
namespace Think\Template\Taglib; use Think\Template\TagLib; Class Test extends TagLib{ }
需要定义标签库的标签定义,标签定义包含了所有标签库中支持的所有标签,定义方式如下
protected $tags = array( // 定义标签 'input' => array('attr'=>'type,name,id,value','close'=>0), // input标签 'textarea' => array('attr'=>'name,id'), );
标签库的所有支持标签都在tags属性中进行定义,tags属性是一个二维数组,每个元素就是一个标签定义,索引名就是标签名,采用小写定义,调用的时候不区分大小写。
每个标签定义支持的属性包括
属性名 | 说明 |
---|---|
attr | 标签支持的属性列表,用逗号分隔 |
close | 标签是否为闭合方式 (0闭合 1不闭合),默认为不闭合 |
level | 标签的嵌套层次(只有不闭合的标签才有嵌套层次) |
alias | 标签别名 |
定义了标签属性后,就需要定义每个标签的解析方法了,每个标签的解析方法在定义的时候需要添加“_”前缀,传入两个参数,对应属性数组和内容字符串(针对非闭合标签)。必须返回标签的字符串解析输出,在标签解析类中可以调用模板类的实例。狼蚁网站SEO优化是一个input解析方法的定义
// input标签解析 public function _input($tag,$content) { $name = $tag['name']; $id = $tag['id']; $type = $tag['type']; $value = $this->autoBuildVar($tag['value']); $str = "<input type='".$type."' id='".$id."' name='".$name."' value='".$value."' />"; return $str; } // textarea标签解析 public function _textarea($tag,$content) { $name = $tag['name']; $id = $tag['id']; $str = '<textarea id="'.$id.'" name="'.$name.'">'.$content.'</textarea>'; return $str; }
定义好标签库扩展之后,我们就可以在模板中使用了,我们必须要告诉模板申明Test标签库,用taglib标签,例如
<taglib name='Test' />
name属性支持申明多个标签库,用逗号分隔即可。申明Test标签库之后,就可以使用Test标签库中的所有标签库了,调用方式如下
<test:input type='radio' id='test' name='mail' value='value' /> <test:textarea id="content" name="content">$value</test:textarea>
注意调用扩展标签库的标签的时候,必须加上标签库的XML命名空间前缀。
Input标签定义value属性可以支持变量传入,所以value被认为是一个变量名,如果在控制器中已经给value模板变量赋值,例如
$this->assign('value','my test value');
标签被模板引擎编译后,就会输出
<input type='radio' id='test' name='mail' value='my test value' /> <textarea id="content" name="content">my test vale</textarea>
更多关于thinkPHP相关内容感兴趣的读者可查看本站专题《》、《》、《》、《》、《》、《》及《》。
希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程