专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016
微信咨询
|
联系我们
扫二维码关注公众号
网站首页
网站建设
短视频
网站推广
网站模板
客户案例
资讯动态
关于我们
网站首页
网站建设
短视频
网站推广
网站模板
客户案例
资讯动态
关于我们
CodeIgniter扩展核心类
当前位置:
网站建设
>
技术支持
CodeIgniter扩展核心类
资料来源:网络整理
时间:
2023/2/14 0:09:20
共计:
3627
浏览
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多语言
同类资讯
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
解决在IIS6中asp站点设置启用默认内容文档*.asp无效的方法
CodeIgniter项目初始化之目录结构
CodeIgniter项目初始化之环境配置、SVN配置
CodeIgniter项目初始化之权限、调试
资讯动态
公司新闻
互联网资讯
电商资讯
优化推广
技术支持
关于我们
公司简介
企业文化
服务项目
公司新闻
服务项目
网站建设
网站推广
品牌策划
移动应用
服务支持
在线咨询
服务流程
产品报价
售后服务
联系我们
代理加盟
付款方式
在线留言
联系方式
联系方式
电话:400-683-0016
邮箱:sales@gzit.cn
QQ:250211130
微信:18520775521
Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有
粤ICP备16019765号
广州京杭网络科技有限公司 版权所有
返回顶部
400-683-0016
在线咨询
微信二维码