目錄 搜尋
欢迎 目录 快速参考图 基本信息 服务器要求 许可协议 变更记录 关于CodeIgniter 安装 下载 CodeIgniter 安装指导 从老版本升级 疑难解答 介绍 开始 CodeIgniter 是什么? CodeIgniter 速记表 支持特性 应用程序流程图 模型-视图-控制器 架构目标 教程 内容提要 加载静态内容 创建新闻条目 读取新闻条目 结束语 常规主题 CodeIgniter URL 控制器 保留字 视图 模型 辅助函数 使用 CodeIgniter 类库 创建你自己的类库 使用 CodeIgniter 适配器 创建适配器 创建核心系统类 钩子 - 扩展框架的核心 自动装载资源 公共函数 URI 路由 错误处理 缓存 调试应用程序 以CLI方式运行 管理应用程序 处理多环境 PHP替代语法 安全 开发规范 类库参考 基准测试类 日历类 购物车类 配置类 Email 类 加密类 文件上传类 表单验证详解 FTP 类 图像处理类 输入类 Javascript 类 语言类 装载类 迁移类 输出类 分页类 模板解析器类 安全类 Session 类 HTML 表格类 引用通告类 排版类 单元测试类 URI 类 User-Agent 类 表单验证 XML-RPC 和 XML-RPC 服务器 Zip 编码类 缓存适配器 适配器参考 适配器 数据库类 Active Record 类 数据库缓存类 自定义函数调用 数据库配置 连接你的数据库 数据库快速入门例子代码 字段数据 数据库维护类 查询辅助函数 数据库类 查询 生成查询记录集 表数据 事务 数据库工具类 JavaScript类 辅助函数参考 数组辅助函数 CAPTCHA 辅助函数 Cookie Helper 日期辅助函数 目录辅助函数 下载辅助函数 Email 辅助函数 文件辅助函数 表单辅助函数 HTML辅助函数 Inflector 辅助函数 语言辅助函数 数字辅助函数 路径辅助函数 安全辅助函数 表情辅助函数 字符串辅助函数 文本辅助函数 排版辅助函数 URL 辅助函数 XML 辅助函数
文字

CodeIgniter 用户指南 版本 2.1.0

编辑文档、查看近期更改请 登录 或 注册  找回密码
查看原文

创建核心系统类

每次CodeIgniter运行时都有很多基础类作为核心框架的一部分被自动初始化.但你也可以使用经过你修改的类来替换甚至扩展这些原始的核心系统类.

大多数用户一般不会有这种需求,但对于那些想较大幅度的改变CodeIgniter的人来说,我们依然提供了替换和扩展核心系统类的选择.

注意:  改变系统核心类会产生很大影响,所以在你做之前必须清楚地知道自己正在做什么.

系统类清单

以下是系统核心文件的清单,它们在每次CodeIgniter启动时被调用:

  • Benchmark
  • Config
  • Controller
  • Exceptions
  • Hooks
  • Input
  • Language
  • Loader
  • Log
  • Output
  • Router
  • URI
  • Utf8

替换核心类

要使用你自己的系统类替换默认类只需简单的将你自己的 .php 文件放入本地文件夹 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 {

    function __construct()
    {
        parent::__construct();
    }
}

Tip:  所有在你的新类中定义的函数如果与母类中函数的命名完全一样,这些函数就能取代母类中原有的函数 (这也被称为"方法覆盖").这允许你在本质上改变CodeIgniter的核心.

如果你扩展了控制器核心类,那么也要在你的应用程序控制器的构造函数中使用这个新类。

class Welcome extends MY_Controller {

    function __construct()
    {
        parent::__construct();
    }

    function index()
    {
        $this->load->view('welcome_message');
    }
}

自定义前缀

要设定你自己的子类前缀,请打开application/config/config.php 文件并找到这一项:

$config['subclass_prefix'] = 'MY_';

请注意所有原始CodeIgniter类库以 CI_ 作为前缀,所以请勿以CI_作为你自己的前缀.所有的扩展核心类必须放到core目录中!

 

翻译贡献者: Hex, longbill, qixingyue, skey, thinksand
最后修改: 2011-07-15 22:26:35
上一篇: 下一篇: