CodeIgniter 創(chuàng)建核心系統(tǒng)類

2018-07-21 15:37 更新

創(chuàng)建核心系統(tǒng)類

每次 CodeIgniter 運(yùn)行時(shí),都有一些基礎(chǔ)類伴隨著核心框架自動(dòng)的被初始化。 但你也可以使用你自己類來(lái)替代這些核心類或者擴(kuò)展這些核心類。

大多數(shù)用戶一般不會(huì)有這種需求,但對(duì)于那些想較大幅度的改變 CodeIgniter 的人來(lái)說(shuō),我們依然提供了替換和擴(kuò)展核心類的選擇。

注解

改變系統(tǒng)核心類會(huì)產(chǎn)生很大影響,所以在你做之前必須清楚地 知道自己正在做什么。

系統(tǒng)類清單

以下是系統(tǒng)核心文件的清單,它們?cè)诿看?CodeIgniter 啟動(dòng)時(shí)被調(diào)用:

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

替換核心類

要使用你自己的系統(tǒng)類替換默認(rèn)的系統(tǒng)類只需簡(jiǎn)單的將你自己的文件 放入目錄 application/core 下:

application/core/some_class.php

如果這個(gè)目錄不存在,你可以創(chuàng)建一個(gè)。

任何一個(gè)和上面清單中同名的文件將被替換成核心類。

要注意的是,你的類名必須以 CI 開(kāi)頭,譬如,你的文件是 Input.php , 那么類應(yīng)該命名為:

class CI_Input {

}

擴(kuò)展核心類

如果你只是想往現(xiàn)有類中添加一些功能,譬如增加一兩個(gè)方法,這時(shí)替換 整個(gè)類感覺(jué)就有點(diǎn)殺雞用牛刀了。在這種情況下,最好是使用擴(kuò)展類的方法。 擴(kuò)展一個(gè)類和替換一個(gè)類的做法幾乎是一樣的,除了要注意以下幾點(diǎn):

  • 你定義的類必須繼承自父類。
  • 你的類名和文件名必須以 MY_ 開(kāi)頭。(這是可配置的,見(jiàn)下文)

舉個(gè)例子,要擴(kuò)展原始的 Input 類,你需要新建一個(gè)文件 application/core/MY_Input.php,然后像下面這樣定義你的類:

class MY_Input extends CI_Input {

}

注解

如果在你的類中需要使用構(gòu)造函數(shù),記得要調(diào)用父類的構(gòu)造函數(shù):

class MY_Input extends CI_Input {

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

提示: 任何和父類同名的方法將會(huì)取代父類中的方法(這又被稱作 “方法覆蓋”), 這讓你可以充分的利用并修改 CodeIgniter 的核心。

如果你擴(kuò)展了 控制器 核心類,那么記得在你的應(yīng)用程序控制器里繼承你 擴(kuò)展的新類。

class Welcome extends MY_Controller {

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

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

自定義前綴

要想自定義你自己的類的前綴,打開(kāi)文件 application/config/config.php 然后找到這項(xiàng):

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

請(qǐng)注意所有原始的 CodeIgniter 類庫(kù)都以 CI_ 開(kāi)頭,所以請(qǐng)不要使用這個(gè) 作為你的自定義前綴。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)