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

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

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

require APPPATH.'third_party/Twig/Autoloader.php';

/**

* Twig模版引擎

*

*/

class Twig

{

public $twig;

public $config;

private $data = array();

/**

* 读取配置文件twig.php并初始化设置

*

*/

public function __construct($config)

{

$config_default = array(

'cache_dir' => false,

'debug' => false,

'auto_reload' => true,

'extension' => '.tpl',

);

$this->config = array_merge($config_default, $config);

Twig_Autoloader::register ();

$loader = new Twig_Loader_Filesystem ($this->config['template_dir']);

$this->twig = new Twig_Environment ($loader, array (

'cache' => $this->config['cache_dir'],

'debug' => $this->config['debug'],

'auto_reload' => $this->config['auto_reload'],

) );

$CI = & get_instance ();

$CI->load->helper(array('url'));

$this->twig->addFunction(new Twig_SimpleFunction('site_url', 'site_url'));

$this->twig->addFunction(new Twig_SimpleFunction('base_url', 'base_url'));

}

/**

* 给变量赋值

*

* @param string|array $var

* @param string $value

*/

public function assign($var, $value = NULL)

{

if(is_array($var)) {

foreach($val as $key => $val) {

$this->data[$key] = $val;

}

} else {

$this->data[$var] = $value;

}

}

/**

* 模版渲染

*

* @param string $template 模板名

* @param array $data 变量数组

* @param string $return true返回 false直接输出页面

* @return string

*/

public function render($template, $data = array(), $return = FALSE)

{

$template = $this->twig->loadTemplate ( $this->getTemplateName($template) );

$data = array_merge($this->data, $data);

if ($return === TRUE) {

return $template->render ( $data );

} else {

return $template->display ( $data );

}

}

/**

* 获取模版名

*

* @param string $template

*/

public function getTemplateName($template)

{

$default_ext_len = strlen($this->config['extension']);

if(substr($template, -$default_ext_len) != $this->config['extension']) {

$template .= $this->config['extension'];

}

return $template;

}

/**

* 字符串渲染

*

* @param string $string 需要渲染的字符串

* @param array $data 变量数组

* @param string $return true返回 false直接输出页面

* @return string

*/

public function parse($string, $data = array(), $return = FALSE)

{

$string = $this->twig->loadTemplate ( $string );

$data = array_merge($this->data, $data);

if ($return === TRUE) {

return $string->render ( $data );

} else {

return $string->display ( $data );

}

}

}

/* End of file Twig.php */

/* Location: ./application/libraries/Twig.php */

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

// 默认扩展名

$config['extension'] = ".tpl";

// 默认模版路劲

$config['template_dir'] = APPPATH . "views/";

// 缓存目录

$config['cache_dir'] = APPPATH . "cache/twig/";

// 是否开启调试模式

$config['debug'] = false;

// 自动刷新

$config['auto_reload'] = true;

/* End of file twig.php */

/* Location: ./application/config/twig.php */

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

更多关于codeigniter相关内容感兴趣的读者可查看本站专题:《codeigniter入门教程》和《CI(CodeIgniter)框架进阶教程》

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

php$paty,CodeIgniter辅助之第三方类库third_party用法分析相关推荐

  1. ThinkPHP中vendor()方法导入第三方类库的用法!ThinkPHP 3.2 vendor()方法的深入研究!

    ThinkPHP vendor 方法导入第三方类库 第三方类库 第三方类库指除了 ThinkPHP 框架.应用项目类库之外的其他类库,一般由第三方系统或产品提供,如 Smarty.Zend 等系统的类 ...

  2. php codeIgniter 框架引入第三方类库文件

    在application/helpers下创建一个php文件,文件名取为mytest_helper.php,文件名必须以_helper结尾. <?php /** * Created by Php ...

  3. 程序开发常用第三方类库一览表(VendorLib)

    以下是自己开发过程中用到的第三方类库,记录下来方便查阅 ------------------------------------------------------------------------ ...

  4. 在typescript中导入第三方类库import报错

    问题 最近开始折腾typescript,在使用第三方类库,比如最常见的lodash,采用常规方法导入 import * as _ from 'lodash' vscode中报错提示lodash不是mo ...

  5. Android实战技巧之十二:Android Studio导入第三方类库、jar包和so库

    第三方类库源码 将一网友的XMPP代码从ADT转到AS时,发现其使用了第三方类库,源码放在了lib下,直接在AS中Import project,第三方类库并没有自动导入进来,看来需要自己动手了. 项目 ...

  6. Android Studio导入第三方类库的方法

     Android Studio导入第三方类库的方法 本人也刚刚开始尝试做android app的开发,听说android studio是Google支持的android 应用开发工具,所以想应该肯 ...

  7. Laravel 加载第三方类库的方法

    https://www.jb51.net/article/138530.htm 这篇文章主要介绍了Laravel 加载第三方类库的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编 ...

  8. Laravel 引入自定义类库或第三方类库

    https://www.cnblogs.com/mouseleo/p/9075187.html 强烈建议引入的类 都是含有命名空间的,这样使用起来就不会出现重名的情况.!!当然,没有命名空间也可以使用 ...

  9. Cocoapods 第三方类库管理工具

    参考:http://www.it165.net/pro/html/201410/24804.html Cocoapods意义体现在两个方面. l   在引入第三方库时它可以自动为我们完成各种各样的配置 ...

最新文章

  1. linux screen 进程,screen 命令使用
  2. Odoo访问权限(一)
  3. JavaScript玩转机器学习:Node 中的 TensorFlow.js
  4. 【Python】循环的拓展
  5. 执行容器内的shell_你的Docker容器可能充满了Graboid加密蠕虫
  6. Maven环境搭建和介绍
  7. 微信/qq/防撤回插件
  8. 经典字符串匹配算法——KMP算法
  9. 【信息学奥赛一本通】题解目录答案
  10. 淘宝京东天猫电商运营每天都需要做什么?
  11. java javaw 命令区别_java 和javaw 的区别
  12. crontab 问号_轻松搞定crontab和quartz表达式
  13. 批量去除Word的向下小箭头
  14. vue+elementUI实现空格或回车在input内添加小标签的功能
  15. JavaScript JSON 格式操作
  16. logback springBoot 配置日志
  17. 【翻译】Flux安全审计已经结束
  18. 行满秩矩阵为何变成增广矩阵还为满秩
  19. sdn网络搭建以及负载均衡
  20. 04 Qt音视频多媒体播放器开发,Qt6.2.3 multimedia

热门文章

  1. Cesium添加建筑模型并设置样式(四)
  2. 2022年商标注册时间以及申请流程,以蚌埠市为例
  3. 数据库sql语句练习 基础篇
  4. 液压通用试验机市场现状研究分析与发展前景预测报告
  5. 添加mysql的url_在python中向mysql行添加url
  6. springboot字符串判断为空或者非空
  7. 流利阅读笔记【日更】
  8. 【c#】Fedex官方API对接过程
  9. 操作系统:时间片轮转RR进程调度算法
  10. 地理国情监测,arcpy将文件夹多个gdb的要素数据集Dataset下的要素类featureClass,使用FeatureClassToShapefile_conversion转换成shapefile