目录搜索
欢迎目录快速参考图基本信息服务器要求许可协议变更记录关于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
上一篇:下一篇: