# 创建核心系统类
每次 CodeIgniter 运行时,都有一些基础类伴随着核心框架自动的被初始化。但你也可以使用你自己类来替代这些核心类或者扩展这些核心类。
大多数用户一般不会有这种需求,但对于那些想较大幅度的改变 CodeIgniter 的人来说,我们依然提供了替换和扩展核心类的选择。
**注解**
改变系统核心类会产生很大影响,所以在你做之前必须清楚地知道自己正在做什么。
系统类清单
以下是系统核心文件的清单,它们在每次 CodeIgniter 启动时被调用:
* Benchmark
* Config
* Controller
* Exceptions
* Hooks
* Input
* Language
* Loader
* Log
* Output
* Router
* Security
* URI
* Utf8
# 替换核心类
要使用你自己的系统类替换默认的系统类只需简单的将你自己的文件放入目录 application/core 下:
~~~
application/core/some_class.php
~~~
如果这个目录不存在,你可以创建一个。
任何一个和上面清单中同名的文件将被替换成核心类。
要注意的是,你的类名必须以 CI 开头,例如,你的文件是 Input.php,那么类应该命名为:
~~~
class CI_Input {
}
~~~
# 扩展核心类
如果你只是想往现有类中添加一些功能,例如增加一两个方法,这时替换整个类感觉就有点杀鸡用牛刀了。在这种情况下,最好是使用扩展类的方法。扩展一个类和替换一个类的做法几乎是一样的,除了要注意以下几点:
你定义的类必须继承自父类。
你的类名和文件名必须以 MY_ 开头。(这是可配置的,见下文)
举个例子,要扩展原始的 Input 类,你需要新建一个文件 application/core/MY_Input.php,然后像下面这样定义你的类:
~~~
class MY_Input extends CI_Input {
}
~~~
**注解**
如果在你的类中需要使用构造函数,记得要调用父类的构造函数:
~~~
class MY_Input extends CI_Input {
public function __construct()
{
parent::__construct();
}
}
~~~
提示: 任何和父类同名的方法将会取代父类中的方法(这又被称作“方法覆盖”),这让你可以充分的利用并修改 CodeIgniter 的核心。
如果你扩展了控制器核心类,那么记得在你的应用程序控制器里继承你扩展的新类。
~~~
class Welcome extends MY_Controller {
public function __construct()
{
parent::__construct();
// Your own constructor code
}
public function index()
{
$this->load->view('welcome_message');
}
}
~~~
# 自定义前缀
要想自定义你自己的类的前缀,打开文件 application/config/config.php 然后找到这项:
~~~
$config['subclass_prefix'] = 'MY_';
~~~
请注意所有原始的 CodeIgniter 类库都以 CI_ 开头,所以请不要使用这个作为你的自定义前缀。
- 空白目录
- 欢迎使用 CodeIgniter
- 安装说明
- 下载CodeIgniter
- 安装说明
- 从老版本升级
- 疑难解答
- CodeIgniter 概览
- 开始
- CodeIgniter 是什么?
- 支持特性
- 应用程序流程图
- 模型-视图-控制器
- 架构目标
- 教程 - 内容提要
- 加载静态内容
- 读取新闻条目
- 创建新闻条目
- 结束语
- 向 CodeIgniter 贡献你的力量
- 编写 CodeIgniter 的文档
- Developer's Certificate of Origin 1.1
- 常规主题
- CodeIgniter URL
- 控制器
- 保留名称
- 视图
- 模型
- 辅助函数
- 使用 CodeIgniter 类库
- 创建类库
- 使用 CodeIgniter 驱动器
- 创建驱动器
- 创建核心系统类
- 创建附属类
- 钩子 - 扩展框架核心
- 自动加载资源
- 公共函数
- 兼容性函数
- URI 路由
- 错误处理
- 网页缓存
- 程序分析
- 以 CLI 方式运行
- 管理你的应用程序
- 处理多环境
- 在视图文件中使用 PHP 替代语法
- 安全
- PHP 开发规范
- 类库参考
- 基准测试类
- 缓存驱动器
- 日历类
- 购物车类
- 配置类
- Email 类
- 加密类
- 加密类(新版)
- 文件上传类
- 表单验证类
- FTP 类
- 图像处理类
- 输入类
- Javascript 类
- 语言类
- 加载器类