当前位置:首页 > CMS教程 > 其它CMS > 列表

CodeIgniter辅助之第三方类库third_party用法分析

发布:smiling 来源: PHP粉丝网  添加日期:2021-07-06 11:47:35 浏览: 评论:0 

本文实例分析了CodeIgniter辅助之第三方类库third_party用法。分享给大家供大家参考,具体如下:

third_party用来存放系统中引入的第三方类库,类库通常提供的功能比较丰富,相应的学习成本也要高些,系统中能用到功能有限,所以建议在引入类库时进行适当的封装,让系统中更方便使用,其他人使用时只需关注扩展的方法而无法关注具体的实现。以CI集成Twig模版为例吧。

首先需要下载Twig类库,并放在third_party中,然后在libraries中进行一次封装,示例如下:

  1. <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 
  2. require APPPATH.'third_party/Twig/Autoloader.php'
  3. /** 
  4.  * Twig模版引擎 
  5.  * 
  6.  */ 
  7. class Twig 
  8.   public $twig
  9.   public $config
  10.   private $data = array(); 
  11.   /** 
  12.    * 读取配置文件twig.php并初始化设置 
  13.    *  
  14.    */ 
  15.   public function __construct($config
  16.   { 
  17.     $config_default = array
  18.       'cache_dir' => false, 
  19.       'debug' => false, 
  20.       'auto_reload' => true, 
  21.       'extension' => '.tpl'
  22.     ); 
  23.     $this->config = array_merge($config_default$config); 
  24.     Twig_Autoloader::register (); 
  25.     $loader = new Twig_Loader_Filesystem ($this->config['template_dir']); 
  26.     $this->twig = new Twig_Environment ($loaderarray ( 
  27.         'cache' => $this->config['cache_dir'], 
  28.         'debug' => $this->config['debug'], 
  29.         'auto_reload' => $this->config['auto_reload'],  
  30.     ) ); 
  31.     $CI = & get_instance (); 
  32.     $CI->load->helper(array('url')); 
  33.     $this->twig->addFunction(new Twig_SimpleFunction('site_url''site_url')); 
  34.     $this->twig->addFunction(new Twig_SimpleFunction('base_url''base_url')); 
  35.   } 
  36.   /** 
  37.    * 给变量赋值 
  38.    *  
  39.    * @param string|array $var 
  40.    * @param string $value 
  41.    */ 
  42.   public function assign($var$value = NULL) 
  43.   { 
  44.     if(is_array($var)) { 
  45.       foreach($val as $key => $val) { 
  46.         $this->data[$key] = $val
  47.       } 
  48.     } else { 
  49.       $this->data[$var] = $value
  50.     } 
  51.   } 
  52.   /** 
  53.    * 模版渲染 
  54.    *  
  55.    * @param string $template 模板名 
  56.    * @param array $data 变量数组 
  57.    * @param string $return true返回 false直接输出页面 
  58.    * @return string 
  59.    */ 
  60.   public function render($template$data = array(), $return = FALSE) 
  61.   { 
  62.     $template = $this->twig->loadTemplate ( $this->getTemplateName($template) ); 
  63.     $data = array_merge($this->data, $data); 
  64.     if ($return === TRUE) { 
  65.       return $template->render ( $data ); 
  66.     } else { 
  67.       return $template->display ( $data ); 
  68.     } 
  69.   } 
  70.   /** 
  71.    * 获取模版名 
  72.    *  
  73.    * @param string $template 
  74.    */ 
  75.   public function getTemplateName($template
  76.   { 
  77.     $default_ext_len = strlen($this->config['extension']); 
  78.     if(substr($template, -$default_ext_len) != $this->config['extension']) { 
  79.       $template .= $this->config['extension']; 
  80.     } 
  81.     return $template
  82.   } 
  83.   /** 
  84.    * 字符串渲染 
  85.    *  
  86.    * @param string $string 需要渲染的字符串 
  87.    * @param array $data 变量数组 
  88.    * @param string $return true返回 false直接输出页面 
  89.    * @return string 
  90.    */ 
  91.   public function parse($string$data = array(), $return = FALSE) 
  92.   { 
  93.     $string = $this->twig->loadTemplate ( $string ); 
  94.     $data = array_merge($this->data, $data); 
  95.     if ($return === TRUE) { 
  96.       return $string->render ( $data ); 
  97.     } else { 
  98.       return $string->display ( $data ); 
  99.     } 
  100.   } 
  101. /* End of file Twig.php */ 
  102. /* Location: ./application/libraries/Twig.php */ 

模版的操作通常有一些配置的信息,这里通过config下的twig.php进行配置,通过CI load library的方式加载时,与类名同名的配置文件存在时,会自动以数组的方式将参数传入类的构造函数。

  1. <?php 
  2. // 默认扩展名 
  3. $config['extension'] = ".tpl"
  4. // 默认模版路劲 
  5. $config['template_dir'] = APPPATH . "views/"
  6. // 缓存目录 
  7. $config['cache_dir'] = APPPATH . "cache/twig/"
  8. // 是否开启调试模式 
  9. $config['debug'] = false; 
  10. // 自动刷新 
  11. $config['auto_reload'] = true; 
  12. /* End of file twig.php */ 
  13. /* Location: ./application/config/twig.php */ 

为了加载base_url site_url等函数到模版,类与CI产生了依赖,分离开可能更好,比如在serice中进行一次封装,增加一些自定义函数等,这样其他地方、其他系统也就很方便复用该类了。

Tags: CodeIgniter辅助 third_party

分享到: