专业网站建设品牌,18年专业建站经验,服务6000+客户--广州松河
免费热线:400-963-0016
微信咨询
|
联系我们
扫二维码关注公众号
网站首页
网站建设
短视频
网站推广
网站模板
客户案例
资讯动态
关于我们
网站首页
网站建设
短视频
网站推广
网站模板
客户案例
资讯动态
关于我们
位置:
广州松河
>
技术支持
> CodeIgniter扩展核心类
CodeIgniter扩展核心类
来源:网络整理 时间:2023/2/14 0:09:20 共
3678
浏览
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多语言
同类资讯
颜宁这两天很红_java
JAVA程序员买ThinkPad哪个系列最好_java
淘宝统一社会信用代码怎么查_PHP基础
有什么推荐的专业吗_java
如何引用数据透视表里的数据_java
如何看待少儿编程教育_java
勾股定理的特殊情况_java
win10系统打不开ACCESS_数据库
oracle查询动态表名_数据库
华为两个系统同ip吗_服务器
ACCESS数据库最多能支持多少人同时在线_数据库
ORACLE数据库导入的时候出现IMP_数据库
喷泉牛杂汤可以循环用吗_java
有什么好的学习资料推荐_java
Oracle中SGA与PGA的区别_数据库
access能用SQL语句么_数据库
乐高cpu的主要功能是什么_java
access2016_数据库
谷歌chrome浏览器未安装flash插件完美解决方案_java
为什么航海王最近登不了_服务器
资讯动态
公司新闻
互联网资讯
电商资讯
优化推广
技术支持
关于我们
公司简介
企业文化
服务项目
公司新闻
服务项目
网站建设
网站推广
品牌策划
移动应用
服务支持
在线咨询
服务流程
产品报价
售后服务
联系我们
代理加盟
付款方式
在线留言
联系方式
联系方式
电话:400-963-0016
邮箱:sales@itwy.com
QQ:250211130
微信:18520775521
Copyright © 广州松河信息科技有限公司 2005-2026 版权所有
粤ICP备16019765号
广州松河信息科技有限公司 版权所有
18520775521
QQ洽谈
sales@itwy.com