专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016
微信咨询
|
联系我们
扫二维码关注公众号
网站首页
网站建设
短视频
网站推广
网站模板
客户案例
资讯动态
关于我们
网站首页
网站建设
短视频
网站推广
网站模板
客户案例
资讯动态
关于我们
CodeIgniter辅助之third_party
当前位置:
网站建设
>
技术支持
CodeIgniter辅助之third_party
资料来源:网络整理
时间:
2023/2/14 0:09:24
共计:
3616
浏览
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中进行一次封装,增加一些自定义函数等,这样其他地方、其他系统也就很方便复用该类了。
版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
相关主题:
制作网站与app
极速网站制作
制作设计网站
河北公司网站制作
小语种制作网站
邯郸制作公司网站
网站水印如何制作
网站制作仿站
如何制作网站小说
怎样制作网站步骤
·上一条:
CodeIgniter执行流程
|
·下一条:
CodeIgniter辅助之helpers、libraries
同类资讯
CodeIgniter执行流程
CodeIgniter钩子
CodeIgniter多语言
CodeIgniter扩展核心类
CodeIgniter心得体会
CodeIgniter配置之URL
CodeIgniter配置之XSS和CSRF
CodeIgniter配置之SESSION
CodeIgniter配置之config
CodeIgniter配置之router
CodeIgniter配置之database
CodeIgniter控制器之MY_Controller
CodeIgniter控制器之业务逻辑
CodeIgniter控制器
CodeIgniter模型
sqlsrv_query
sqlsrv_rollback
sqlsrv_rows_affected
sqlsrv_send_stream_data
sqlsrv_server_info
资讯动态
公司新闻
互联网资讯
电商资讯
优化推广
技术支持
关于我们
公司简介
企业文化
服务项目
公司新闻
服务项目
网站建设
网站推广
品牌策划
移动应用
服务支持
在线咨询
服务流程
产品报价
售后服务
联系我们
代理加盟
付款方式
在线留言
联系方式
联系方式
电话:400-683-0016
邮箱:sales@gzit.cn
QQ:250211130
微信:18520775521
Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有
粤ICP备16019765号
广州京杭网络科技有限公司 版权所有
返回顶部
400-683-0016
在线咨询
微信二维码