在线文档教程
Codeigniter 3

创建核心系统类 | 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_为前缀,因此请勿将其用作前缀。