CodeIgniter辅助之第三方类库third_party用法分析
本文实例分析了CodeIgniter辅助之第三方类库third_party用法。分享给大家供大家参考,具体如下:
third_party用来存放系统中引入的第三方类库,类库通常提供的功能比较丰富,相应的学习成本也要高些,系统中能用到功能有限,所以建议在引入类库时进行适当的封装,让系统中更方便使用,其他人使用时只需关注扩展的方法而无法关注具体的实现。以CI集成Twig模版为例吧。
首先需要下载Twig类库,并放在third_party中,然后在libraries中进行一次封装,示例如下:
<?phpif(!defined('BASEPATH'))exit('Nodirectscriptaccessallowed'); requireAPPPATH.'third_party/Twig/Autoloader.php'; /** *Twig模版引擎 * */ classTwig { public$twig; public$config; private$data=array(); /** *读取配置文件twig.php并初始化设置 * */ publicfunction__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=newTwig_Loader_Filesystem($this->config['template_dir']); $this->twig=newTwig_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(newTwig_SimpleFunction('site_url','site_url')); $this->twig->addFunction(newTwig_SimpleFunction('base_url','base_url')); } /** *给变量赋值 * *@paramstring|array$var *@paramstring$value */ publicfunctionassign($var,$value=NULL) { if(is_array($var)){ foreach($valas$key=>$val){ $this->data[$key]=$val; } }else{ $this->data[$var]=$value; } } /** *模版渲染 * *@paramstring$template模板名 *@paramarray$data变量数组 *@paramstring$returntrue返回false直接输出页面 *@returnstring */ publicfunctionrender($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); } } /** *获取模版名 * *@paramstring$template */ publicfunctiongetTemplateName($template) { $default_ext_len=strlen($this->config['extension']); if(substr($template,-$default_ext_len)!=$this->config['extension']){ $template.=$this->config['extension']; } return$template; } /** *字符串渲染 * *@paramstring$string需要渲染的字符串 *@paramarray$data变量数组 *@paramstring$returntrue返回false直接输出页面 *@returnstring */ publicfunctionparse($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); } } } /*EndoffileTwig.php*/ /*Location:./application/libraries/Twig.php*/
模版的操作通常有一些配置的信息,这里通过config下的twig.php进行配置,通过CIloadlibrary的方式加载时,与类名同名的配置文件存在时,会自动以数组的方式将参数传入类的构造函数。
<?php //默认扩展名 $config['extension']=".tpl"; //默认模版路劲 $config['template_dir']=APPPATH."views/"; //缓存目录 $config['cache_dir']=APPPATH."cache/twig/"; //是否开启调试模式 $config['debug']=false; //自动刷新 $config['auto_reload']=true; /*Endoffiletwig.php*/ /*Location:./application/config/twig.php*/
为了加载base_urlsite_url等函数到模版,类与CI产生了依赖,分离开可能更好,比如在serice中进行一次封装,增加一些自定义函数等,这样其他地方、其他系统也就很方便复用该类了。
更多关于codeigniter相关内容感兴趣的读者可查看本站专题:《codeigniter入门教程》和《CI(CodeIgniter)框架进阶教程》
希望本文所述对大家基于CodeIgniter框架的PHP程序设计有所帮助。