专业网站建设品牌,17年专业建站经验,服务6000+客户--广州松河
免费热线:400-963-0016
微信咨询
|
联系我们
扫二维码关注公众号
网站首页
网站建设
短视频
网站推广
网站模板
客户案例
资讯动态
关于我们
网站首页
网站建设
短视频
网站推广
网站模板
客户案例
资讯动态
关于我们
位置:
广州松河
>
技术支持
> CodeIgniter扩展核心类
CodeIgniter扩展核心类
来源:网络整理 时间:2023/2/14 0:09:20 共
3665
浏览
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多语言
同类资讯
Golang可以做界面吗_CSS学习
如何调整表格大小_CSS学习
GAUGE是什么_vue
三相异步电动机要想实现正反转_vue
Cass文字注记如何导入arcgis_CSS学习
零基础可以转行前端吗_js/jQuery
js怎么处理执行数据_vue
class为啥会自己换行_CSS学习
iosinput调键盘输入的时候把整个页面顶上去了怎么解决_CSS学习
从而方便布局全面屏以迎合市场需求_vue
单晶x射线衍射方法的优缺点_vue
但到发票网上一直显示打印插件没有正常安装_vue
http状态码461解决方法_Ajax
软件行业的工程师分几种_Ajax
ActiveX部件不能创建对象的终极解决方案_CSS学习
我要打印一本书_CSS学习
NBA每支球队球衣都是什么颜色_Ajax
什么叫做艺术_CSS学习
开机后出现loadresourcefail是怎么回事_Ajax
中国知网怎么下载部分文献_CSS学习
资讯动态
公司新闻
互联网资讯
电商资讯
优化推广
技术支持
关于我们
公司简介
企业文化
服务项目
公司新闻
服务项目
网站建设
网站推广
品牌策划
移动应用
服务支持
在线咨询
服务流程
产品报价
售后服务
联系我们
代理加盟
付款方式
在线留言
联系方式
联系方式
电话:400-963-0016
邮箱:sales@itwy.com
QQ:250211130
微信:18520775521
Copyright © 广州松河信息科技有限公司 2005-2025 版权所有
粤ICP备16019765号
广州松河信息科技有限公司 版权所有
18520775521
QQ洽谈
sales@itwy.com