创建核心系统类 | Creating Core System Classes
创建核心系统类
每次CodeIgniter运行时,都会有几个基类作为核心框架的一部分自动初始化。但是,可以用自己的版本交换任何核心系统类,甚至扩展核心版本。
大多数用户永远不会需要这样做,但是对于那些想要显著改变CodeIgniter核心的用户来说,替换或扩展它们的选项确实存在。
注
处理核心系统类有很多含义,所以在尝试之前一定要知道自己在做什么。
系统类列表
以下是每次运行CodeIgniter时调用的核心系统文件的列表:
- 基准
- 配置
- 控制器
- 例外
- 钩钩
- 输入
- 语言
- 装载机
- 原木
- 输出量
- 路由器
- 保安
- 乌里
- UTF8
替换核心类
若要使用您自己的系统类而不是默认的系统类,只需将您的版本放置在本地中即可。应用/核心/
目录:
application/core/some_class.php
如果该目录不存在,则可以创建它。
任何与上面列表中的文件名相同的文件都将被使用,而不是通常使用的文件。
请注意,您的类必须使用CI作为前缀。例如,如果您的文件名为input.php,那么类将被命名为:
class CI_Input {
}
扩展核心类
如果您需要做的就是向现有的库添加一些功能--也许添加一两个方法--那么用您的版本替换整个库就太过分了。在这种情况下,最好只是扩展类。扩展类与替换类几乎相同,但有几个例外:
- 类声明必须扩展父类。
- 您的新类名和文件名必须以[医]%28此项目是可配置的。见下文%29。
例如,要扩展本机输入类,您将创建一个名为application/core/my的文件[医]php,并使用以下方法声明类:
class MY_Input extends CI_Input {
}
注
如果需要在类中使用构造函数,请确保扩展父构造函数:
class MY_Input extends CI_Input {
public function __construct()
{
parent::__construct(
}
}
提示:
类中将使用与父类中的方法命名相同的任何函数,而不是本地函数(这称为“方法重写”)。这使您可以大幅改变CodeIgniter内核。
如果要扩展Controller核心类,请确保在应用程序控制器的构造函数中扩展新类。
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_为前缀,因此请勿将其用作前缀。