php$paty,CodeIgniter辅助之第三方类库third_party用法分析
本文实例分析了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用法分析相关推荐
- ThinkPHP中vendor()方法导入第三方类库的用法!ThinkPHP 3.2 vendor()方法的深入研究!
ThinkPHP vendor 方法导入第三方类库 第三方类库 第三方类库指除了 ThinkPHP 框架.应用项目类库之外的其他类库,一般由第三方系统或产品提供,如 Smarty.Zend 等系统的类 ...
- php codeIgniter 框架引入第三方类库文件
在application/helpers下创建一个php文件,文件名取为mytest_helper.php,文件名必须以_helper结尾. <?php /** * Created by Php ...
- 程序开发常用第三方类库一览表(VendorLib)
以下是自己开发过程中用到的第三方类库,记录下来方便查阅 ------------------------------------------------------------------------ ...
- 在typescript中导入第三方类库import报错
问题 最近开始折腾typescript,在使用第三方类库,比如最常见的lodash,采用常规方法导入 import * as _ from 'lodash' vscode中报错提示lodash不是mo ...
- Android实战技巧之十二:Android Studio导入第三方类库、jar包和so库
第三方类库源码 将一网友的XMPP代码从ADT转到AS时,发现其使用了第三方类库,源码放在了lib下,直接在AS中Import project,第三方类库并没有自动导入进来,看来需要自己动手了. 项目 ...
- Android Studio导入第三方类库的方法
Android Studio导入第三方类库的方法 本人也刚刚开始尝试做android app的开发,听说android studio是Google支持的android 应用开发工具,所以想应该肯 ...
- Laravel 加载第三方类库的方法
https://www.jb51.net/article/138530.htm 这篇文章主要介绍了Laravel 加载第三方类库的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编 ...
- Laravel 引入自定义类库或第三方类库
https://www.cnblogs.com/mouseleo/p/9075187.html 强烈建议引入的类 都是含有命名空间的,这样使用起来就不会出现重名的情况.!!当然,没有命名空间也可以使用 ...
- Cocoapods 第三方类库管理工具
参考:http://www.it165.net/pro/html/201410/24804.html Cocoapods意义体现在两个方面. l 在引入第三方库时它可以自动为我们完成各种各样的配置 ...
最新文章
- 39 岁网络技术员入住养老院,早 6 晚 9 的作息、和老人一起追剧晒太阳!
- Flask == scoped_session
- 《leetcode》remove-duplicates-from-sorted-array-ii
- MVC5 + EF6 + Bootstrap3
- 创业不要把大公司当直接对手
- java -jar 内存溢出_JAVA系统启动栈内存溢出-StackOverflowError
- Windows API ——WritePrivateProfileString——配置文件
- linux 虚拟一个40段ip,linux – 接口上的Multiples ip地址.我想指定其中一个输出
- 西湖区政府门户网站项目签约西部动力We7网站群系统
- 复制百度文库的文字加什么后缀_下载百度文库文档 怎么快速提取百度文库中可以完整阅读的文档...
- Listary——好用到哭的高效快速搜索工具
- jar脱壳_[转载]脱壳再打包某梆梆免费加固APP
- pacman 查询_archlinux pacman常用命令
- 分享假如你买到缩水U盘了怎么办?认倒霉?肯定不能的!
- 【SCIENTIFIC AMERICAN December 2019】【NUCLEAR PHYSICS】Proton Size Puzzle
- 嵌入式系统开发笔记15:CJ/T-188 冷热量表协议解析4
- NC20860 兔子的区间密码
- react创建组件及注意事项
- Java判断平衡二叉树
- 西门子PLC能否实时无线采集多处从站模拟量数据?