コアシステムクラスの作成

CodeIgniter の実行のたび、いくつかの基本クラスは フレームワークのコアの一部として自動的に初期化されます。 しかしながら、コアシステムクラスをあなた自身のバージョンのものに差し替え、 または継承することが可能です。

ほとんどのユーザはそのようなことをする必要性はありませんが、 交換または拡張するための選択肢として、 CodeIgniter のコアを大幅に変更したい人のために存在します。

注釈

コアシステムクラスをいじると影響範囲が大きいので、 そうする前に、何をしようとしているかを十分に理解してください。

システムクラス一覧

以下は CodeIgniter が実行されるたびに呼び出されるコアシステムファイルのリストです:

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

コアクラスの置き換え

デフォルトのかわりに独自システムクラスを使うには、 シンプルに手元の application/core/ ディレクトリ内にそれを置いてください:

application/core/some_class.php

このディレクトリが存在しない場合は、作ってください。

上記のリストにあるいずれのファイルも、 通常使用されるものの代わりに使用されます。

クラスがプレフィックスとして CI を使用しなければならないことに注意してください。 たとえば、ファイル Input.php のクラスはつぎのように名付けられます:

class CI_Input {

}

コアクラスの継承

やりたいことがいくらかの機能を既存のライブラリに加えたいだけ ――ひょっとするとメソッドをひとつふたつ追加する場合――、ライブラリ全体をあなたのバージョンに置き換えるのはやりすぎです。 この場合、シンプルにクラスを継承するのが良いでしょう。 クラスを継承するのは 2 つの例外を除いて、 クラスを置き換えるとほぼ同じです:

  • クラスは、親クラスを継承する必要があります。
  • 新しいクラス名とファイル名は、プレフィックスに MY_ を付ける必要があります (これは設定で変更可能です。後述します)。

たとえば、標準の入力クラスを継承するためには、 application/core/MY_Input.php という名前のファイルを作成し、つぎのようにクラスを宣言します:

class MY_Input extends CI_Input {

}

注釈

クラスのコンストラクタを使用する必要がある場合、 親クラスのコンストラクタを呼び出していることを確認してください:

class MY_Input extends CI_Input {

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

ヒント: 親クラスのメソッドとまったく同じ名前が付けられたあらゆる関数は、 親クラスのそれの代わりとして使われます (これは「メソッドのオーバーライド」として知られています) 。 これにより、実質的に CodeIgniter のコアを変更することができます。

コントローラのコアクラスを継承している場合、 アプリケーションのコントローラのコンストラクタが使われていることを確かめてください。

class Welcome extends MY_Controller {

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

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

独自のプレフィックスを設定する

独自のプレフィックスを設定するには application/config/config.php ファイルを開いて、つぎの項目を探してください:

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

すべての標準の CodeIgniter のライブラリはプレフィックスに CI_ がついていますので、これは 使 わ な い よ う ご注意ください。