专业网站建设品牌,17年专业建站经验,服务6000+客户--广州松河
免费热线:400-963-0016
微信咨询
|
联系我们
扫二维码关注公众号
网站首页
网站建设
短视频
网站推广
网站模板
客户案例
资讯动态
关于我们
网站首页
网站建设
短视频
网站推广
网站模板
客户案例
资讯动态
关于我们
位置:
广州松河
>
技术支持
> CodeIgniter辅助之third_party
CodeIgniter辅助之third_party
来源:网络整理 时间:2023/2/14 0:09:24 共
3644
浏览
third_party用来存放系统中引入的第三方类库,类库通常提供的功能比较丰富,相应的学习成本也要高些以及系统中能用到功能有限,所以建议在引入类库时进行适当的封装,让系统中更方便使用,其他人使用时只需关注扩展的方法而无法关注具体的实现。以CI集成Twig模版为例吧。
首先需要下载Twig类库,并放在third_party中,然后在libraries中进行一次封装,示例如下:
PHP
复制代码
<?php
if
(
!
defined
(
'BASEPATH'
)
)
exit
(
'No direct script access allowed'
)
;
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的方式加载时,与类名同名的配置文件存在时,会自动以数组的方式将参数传入类的构造函数。
PHP
复制代码
<?php
// 默认扩展名
$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中进行一次封装,增加一些自定义函数等,这样其他地方、其他系统也就很方便复用该类了。
版权说明:
本网站凡注明“广州松河 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
相关主题:
网页设计简单案例
网页设计大学作业
网页设计 留言模板
w网页设计标题
圣诞网页设计素材
大专网页设计考试
网页设计常用方式
网页设计竞赛作品
明星的网页设计
app与网页设计
·上一条:
CodeIgniter执行流程
|
·下一条:
CodeIgniter辅助之helpers、libraries
同类资讯
服务器linux环境运行php_数据库
做二维码的时候_数据库
mysql要学多久入门_数据库
mysql log查询,如何对MySQL数据库中的数据进行实时同步_数据
数据库中的数据格式是什么_数据库
TSC条码打印机能连接哪些数据库_数据库
mysql 横向查询,web前端掌握的技能和面对的工作有哪些_数据库
mydql8和mysql5兼容吗_数据库
mysql 查询拆分,现在想自费学习软件测试晚吗_数据库
条形码怎么递增_数据库
found怎么办_数据库
vuejs可以直接连接mysql数据库吗_数据库
mysql 新建查询,如何在mysql中创建emp表_数据库
Mysql导表出错ERROR_数据库
Linux全命令行操作下配置Mysql_数据库
mysql 查询写入,mysql数据库读写分离中间层代理插件都有哪些_数
sql表结构文件扩展名_数据库
有初学者学习python实用的编辑器吗_数据库
mysql运行sql文件出错_数据库
mysql层次查询,java好学吗_数据库
资讯动态
公司新闻
互联网资讯
电商资讯
优化推广
技术支持
关于我们
公司简介
企业文化
服务项目
公司新闻
服务项目
网站建设
网站推广
品牌策划
移动应用
服务支持
在线咨询
服务流程
产品报价
售后服务
联系我们
代理加盟
付款方式
在线留言
联系方式
联系方式
电话:400-963-0016
邮箱:sales@itwy.com
QQ:250211130
微信:18520775521
Copyright © 广州松河信息科技有限公司 2005-2025 版权所有
粤ICP备16019765号
广州松河信息科技有限公司 版权所有
18520775521
QQ洽谈
sales@itwy.com