专业网站建设品牌,18年专业建站经验,服务6000+客户--广州松河
免费热线:400-963-0016
微信咨询
|
联系我们
扫二维码关注公众号
网站首页
网站建设
短视频
网站推广
网站模板
客户案例
资讯动态
关于我们
网站首页
网站建设
短视频
网站推广
网站模板
客户案例
资讯动态
关于我们
位置:
广州松河
>
技术支持
> CodeIgniter扩展核心类
CodeIgniter扩展核心类
来源:网络整理 时间:2023/2/14 0:09:20 共
3673
浏览
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下的内容了。
版权说明:
本网站凡注明“广州松河 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
相关主题:
iis 网站正在建设中
山东省建设厅网站分享
昆明中小企业网站建设
湖北省建设厅网站视频
广西南宁网站建设公司
手机网站建设公司哪家好
淮南市建设委员会网站
贵州省建设厅网站链接
山西省建设厅网站资源
历城二中网站建设
·上一条:
CodeIgniter心得体会
|
·下一条:
CodeIgniter多语言
同类资讯
战地一武器皮肤怎么装_服务器
快手登录不上去怎么办_服务器
星管家服务器异常_服务器
三星手机怎么创建google帐户_服务器
如何检查Linux的内存使用状况_服务器
微信发出去的请求怎么强制撤回_服务器
阿里云服务器和云数据库长期使用_服务器
为什么绝地求生要用加速器_服务器
怎样在公司电脑的outlook2013里看到公司邮箱的端口什么的_服务器
比较好用的邮箱有什么_服务器
iphone12美版虚拟卡怎么用_服务器
为什么有些游戏厂商要把端游制作成手游_服务器
怎么登陆国外服务器_服务器
1U服务器电源用什么好_服务器
文明重启国际服混服是哪个_服务器
联想b51怎么进入bios设置_服务器
换网线对直播间影响_服务器
2019年出现了哪些数据泄露事件_服务器
金蝶在另一个电脑上怎么才能登录_服务器
电脑备用内存太大了_服务器
资讯动态
公司新闻
互联网资讯
电商资讯
优化推广
技术支持
关于我们
公司简介
企业文化
服务项目
公司新闻
服务项目
网站建设
网站推广
品牌策划
移动应用
服务支持
在线咨询
服务流程
产品报价
售后服务
联系我们
代理加盟
付款方式
在线留言
联系方式
联系方式
电话:400-963-0016
邮箱:sales@itwy.com
QQ:250211130
微信:18520775521
Copyright © 广州松河信息科技有限公司 2005-2026 版权所有
粤ICP备16019765号
广州松河信息科技有限公司 版权所有
18520775521
QQ洽谈
sales@itwy.com