专业网站建设品牌,17年专业建站经验,服务6000+客户--广州松河
免费热线:400-963-0016
微信咨询
|
联系我们
扫二维码关注公众号
网站首页
网站建设
短视频
网站推广
网站模板
客户案例
资讯动态
关于我们
网站首页
网站建设
短视频
网站推广
网站模板
客户案例
资讯动态
关于我们
位置:
广州松河
>
技术支持
> CodeIgniter扩展核心类
CodeIgniter扩展核心类
来源:网络整理 时间:2023/2/14 0:09:20 共
3656
浏览
CI中对核心类、辅助类和函数的扩展是相当方便的,配置文件中指定了subclass_prefix扩展前缀,默认为MY_,扩展时需要以该配置为前缀,下面整理下扩展方式。
1、扩展核心类
核心类位于system/core下,其中大部分类会在初始化的时候自动加载。扩展核心类的方式有两种:替换核心类和继承核心类。
替换核心类
当application/core目录下存在与system/core同名的文件时会自动替换掉核心类。以Loader.php为例,当创建application/core/Loader.php后会自动加载该类,由于该类为系统核心类,所以,如果Loader.php未实现CI_Loader类中的方法则会报错,如:
PHP
复制代码
class
CI_Loader
{
...
}
复制代码
替换核心类需要重写其中的所有方法,以免影响核心功能。但大部分时候并不需要重写整个核心,基本上只是增加某些方法,这个时候可以采取继承的方式。
继承核心类
继承核心类需要以subclass_prefix为前缀,如扩展Input类,需创建application/core/MY_Input.php,并且MY_Input需要继承CI_Input类,如:
PHP
复制代码
<?php
if
(
!
defined
(
'BASEPATH'
)
)
exit
(
'No direct script access allowed'
)
;
class
MY_Input
extends
CI_Input
{
function
_clean_input_keys
(
$str
)
{
$config
=
&
get_config
(
'config'
)
;
if
(
!
preg_match
(
"/^["
.
$config
[
'permitted_uri_chars'
]
.
"]+$/i"
,
rawurlencode
(
$str
)
)
)
{
exit
(
'Disallowed Key Characters.'
)
;
}
// Clean UTF-8 if supported
if
(
UTF8_ENABLED
===
TRUE
)
{
$str
=
$this
->
uni
->
clean_string
(
$str
)
;
}
return
$str
;
}
}
/* End of file MY_Input.php */
/* Location: ./application/core/MY_Input.php */
复制代码
2、扩展CI类库
system/libraries下实现了一些辅助类,当有需要扩展这些类时,和核心类的处理方式是一样的,只不过目录变成了application/libraries
3、扩展辅助函数
辅助函数存放于application/helpers目录下,辅助函数的“继承”方式与上面相同。因为CI的辅助函数都有使用function_exists来判断是否存在,所以也可以达到“重写”的目的。如在array中新增一个数组排序方法:
PHP
复制代码
<?php
if
(
!
defined
(
'BASEPATH'
)
)
exit
(
'No direct script access allowed'
)
;
/**
* 对二维数组进行排序
*
* @param array $data 需要排序的字段
* @param array $sort_field 按哪个键进行排序,如果不是所有键中都含有该字段则返回原数组
* @param array $sort_type 排序方式 SORT_ASC 升序 SORT_DESC 降序
* @return array
*/
function
array_field_sort
(
$data
,
$sort_field
,
$sort_type
=
SORT_ASC
)
{
if
(
!
is_array
(
$data
)
)
{
return
false
;
}
$sort_arr
=
array
(
)
;
foreach
(
$data
as
$key
=>
$val
)
{
if
(
isset
(
$val
[
$sort_field
]
)
)
{
$sort_arr
[
$key
]
=
$val
[
$sort_field
]
;
}
}
if
(
count
(
$sort_arr
)
==
count
(
$data
)
)
{
array_multisort
(
$sort_arr
,
$sort_type
,
$data
)
;
}
return
$data
;
}
/* End of file MY_array_helper.php */
/* Location: ./application/helpers/MY_array_helper.php */
复制代码
总的来说,可以对CI框架system目录下的大部分内容进行重写,灵活度很高,扩展也很方便。但有时候也需要注意一下,并不是扩展的越多就越好,确保CI实现不了的功能再去扩展。最后既然CI提供了扩展的功能,就不要直接去修改system下的内容了。
版权说明:
本网站凡注明“广州松河 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
相关主题:
廊坊品牌网站建设是什么
安徽淘宝网站建设公司
游戏网站建设方案有哪些
江油小微网站建设设计
江苏品牌网站建设是什么
天津电商网站建设报价要求
海南网站建设网页推广
揭阳电商网站建设公司
网站建设与优化的优缺点
怎么建设公司网站的网址
·上一条:
CodeIgniter心得体会
|
·下一条:
CodeIgniter多语言
同类资讯
cod19只玩剧情怎么买_java
如何在家里做豆腐脑_java
就中专学历能学习吗_java
你看过的重口味电影有哪些_java
word另存为会将原有的文档覆盖么_java
丹东百特的激光粒度仪怎么样啊_java
若在Spring功能ioc和aop中须二选一_java
如何做好生产环境和开发环境的隔离_java
为什么nio效率会比bio高_java
鲁滨逊漂流到荒岛上后用到了以前学会了哪些本领还有技能_java
整队口令怎么喊有气势_java
2018年7月份刚毕业的计算机专业学生_java
请问中原工学院信息商务学院怎么样啊_java
能不能把一个可编辑的excel做桌面_java
while加分号是什么结果_java
没法聊到一块你怎么看_java
亚马逊怎么建仓库_java
无锡学it要多少钱_java
创业三年都没成功_java
作为一个程序员你们经常加班吗_java
资讯动态
公司新闻
互联网资讯
电商资讯
优化推广
技术支持
关于我们
公司简介
企业文化
服务项目
公司新闻
服务项目
网站建设
网站推广
品牌策划
移动应用
服务支持
在线咨询
服务流程
产品报价
售后服务
联系我们
代理加盟
付款方式
在线留言
联系方式
联系方式
电话:400-963-0016
邮箱:sales@itwy.com
QQ:250211130
微信:18520775521
Copyright © 广州松河信息科技有限公司 2005-2025 版权所有
粤ICP备16019765号
广州松河信息科技有限公司 版权所有
18520775521
QQ洽谈
sales@itwy.com