本文实例分析了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. 39 岁网络技术员入住养老院,早 6 晚 9 的作息、和老人一起追剧晒太阳!
  2. Flask == scoped_session
  3. 《leetcode》remove-duplicates-from-sorted-array-ii
  4. MVC5 + EF6 + Bootstrap3
  5. 创业不要把大公司当直接对手
  6. java -jar 内存溢出_JAVA系统启动栈内存溢出-StackOverflowError
  7. Windows API ——WritePrivateProfileString——配置文件
  8. linux 虚拟一个40段ip,linux – 接口上的Multiples ip地址.我想指定其中一个输出
  9. 西湖区政府门户网站项目签约西部动力We7网站群系统
  10. 复制百度文库的文字加什么后缀_下载百度文库文档 怎么快速提取百度文库中可以完整阅读的文档...
  11. Listary——好用到哭的高效快速搜索工具
  12. jar脱壳_[转载]脱壳再打包某梆梆免费加固APP
  13. pacman 查询_archlinux pacman常用命令
  14. 分享假如你买到缩水U盘了怎么办?认倒霉?肯定不能的!
  15. 【SCIENTIFIC AMERICAN December 2019】【NUCLEAR PHYSICS】Proton Size Puzzle
  16. 嵌入式系统开发笔记15:CJ/T-188 冷热量表协议解析4
  17. NC20860 兔子的区间密码
  18. react创建组件及注意事项
  19. Java判断平衡二叉树
  20. 西门子PLC能否实时无线采集多处从站模拟量数据?

热门文章

  1. 夏普比率与信息比率--通俗量化分析思维
  2. HTMLCSS设计小米导航栏
  3. 为什么您公司的工作周报制度,形同虚设?
  4. TiUP在线布署TIDB分布式数据库集群节点删除
  5. 从2开始,在Go语言后端业务系统中引入缓存
  6. 【day15】每日强训编程题——查找输入整数二进制中1的个数手套
  7. HDFS文件的健康检查
  8. JS如何设置CSS样式?
  9. 使用百度地图API实现驾车导航
  10. php关联数组不使用函数排序,php关联数组_PHP关联数组排序几种方法