CI核心类

来源:互联网 发布:开实体店淘宝进货 编辑:程序博客网 时间:2024/06/05 11:57

CI中对

核心类、

辅助类,

辅助函数

的扩展是相当方便的,

配置文件中指定了subclass_prefix扩展前缀,默认为MY_,扩展时需要以该配置为前缀,下面整理下扩展方式。

1、扩展核心类

核心类位于system/core下,其中大部分类会在初始化的时候自动加载。扩展核心类的方式有两种:

替换核心类和继承核心类。

替换核心类

当application/core目录下存在与system/core同名的文件时会自动替换掉核心类。

以Loader.php为例,当创建application/core/Loader.php后会自动加载该类,由于该类为系统核心类,

所以,如果Loader.php未实现CI_Loader类中的方法则会报错。

替换核心类需要重写其中的所有方法,以免影响核心功能。

但大部分时候并不需要重写整个核心,基本上只是增加某些方法,这个时候可以采取继承的方式。

继承核心类
继承核心类需要以subclass_prefix为前缀,如扩展Input类,

需创建application/core/MY_Input.php,

并且MY_Input需要继承CI_Input类,如:

classMY_Inputextends 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;
    }
}

2、扩展CI类库(辅助类)

system/libraries下实现了一些辅助类,当有需要扩展这些类时,和核心类的处理方式是一样的,

只不过目录变成了application/libraries

如MY_Log扩展来自Log

经过扩展的该类会自动加载,无需手动加载!!!

3、扩展辅助函数

辅助函数存放于application/helpers目录下,

CodeIgniter 默认是没有载入辅助函数文件的;

你如果想 "扩展"一个原有的 Helpers,,可以在你的 application/helpers/ 目录下创建一个新的helper,

新的helper的名字是在被“扩展”的Helper的名字开头多加一个 MY_

例如,扩展一个本地已有的 Array Helper 你应该建立一个文件: application/helpers/MY_array_helper.php,

并添加或重写(override)其中的一些方法

需要手动加载

注意:区别清楚你要扩展的类是核心类还是辅助类。

转载:http://pengbotao.cn/codeigniter-extension.html









0 0