• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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 标签别名

    定义了标签属性后,就需要定义每个标签的解析方法了,每个标签的解析方法在定义的时候需要添加“_”前缀,传入两个参数,对应属性数组和内容字符串(针对非闭合标签)。必须返回标签的字符串解析输出,在标签解析类中可以调用模板类的实例。下面是一个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入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》及《PHP模板技术总结》。

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

    您可能感兴趣的文章:
    • thinkphp 框架数据库切换实现方法分析
    • Thinkphp 框架配置操作之动态配置、扩展配置及批量配置实例分析
    • Thinkphp 框架配置操作之配置加载与读取配置实例分析
    • Thinkphp 框架基础之入口文件功能、定义与用法分析
    • Thinkphp 框架基础之源码获取、环境要求与目录结构分析
    • Thinkphp 框架扩展之驱动扩展实例分析
    • Thinkphp 框架扩展之应用模式实现方法分析
    • Thinkphp 框架扩展之Widget扩展实现方法分析
    • Thinkphp 框架扩展之行为扩展原理与实现方法分析
    • 浅谈PHP之ThinkPHP框架使用详解
    上一篇:Thinkphp 框架扩展之数据库驱动常用方法小结
    下一篇:Thinkphp 框架扩展之行为扩展原理与实现方法分析
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Thinkphp 框架扩展之标签库驱动原理与用法分析 Thinkphp,框架,扩展,之,标签,