CI_Controller
「CI_Controller」クラスは、ユーザが開発するコントローラクラスの基底クラスとなります。 ユーザが開発するコントローラクラスは必ず「CI_Controller」クラスを継承しなければいけません。
「基礎編 / コントローラ」の頁も参照してください。
「CI_Controller」クラスは「CodeIgniter.php」によって呼び出されると、「CodeIgniter.php」がそれまでにロードした
コアクラスのインスタンスと、新たにロードした「CI_Loader」
クラスのインスタンスをプロパティ変数にセットして保持します。
「CI_Controller」が保持する各コアクラスのインスタンスとプロパティ変数は以下のものとなります。
CI_Benchmark | $this->benchmark |
CI_Hooks | $this->hooks |
CI_Config | $this->config |
CI_Utf8 | $this->utf8 |
CI_URI | $this->uri |
CI_Router | $this->router |
CI_Output | $this->output |
CI_Security | $this->security |
CI_Input | $this->input |
CI_Lang | $this->lang |
CI_Loader | $this->load |
コアクラスの利用
「CI_Controller」クラスを継承(オーバーライド)したコントローラクラスは、
これらのプロパティ変数を用いて対応するコアクラスの機能が利用できるようになります。
以下は、それぞれのコアクラスインスタンスの機能を利用する一例です。
- $this->benchmark
- $this->config
- $this->utf8
- $this->uri
- $this->router
- $this->output
- $this->security
- $this->input
- $this->lang
- $this->load
CI_Controllerクラスインスタンス取得
「CI_Controller」及び「CI_Model」基底クラスを継承(オーバーライド)したクラスは、 各コアクラスインスタンスをプロパティ変数を用いることで利用できるのですが、 コントローラとモデル以外のライブラリクラスやヘルパークラスなどからは プロパティ変数を利用してコアクラスのインスタンスにアクセスできません。
ライブラリクラスやヘルパークラスからコアクラスのインスタンスを利用するには、
「CI_Controller」クラスのインスタンスを取得する必要があります。
取得した「CI_Controller」インスタンスからコアクラスのインスタンスが利用できるようになります。
CI_Controller::get_instance()
- CI_Controllerインスタンスの利用
「CI_Controller」クラスのスタティックメソッド「get_instance()」を実行すると、「CI_Controller」
クラスのインスタンスが取得できます。
「get_instance()」メソッドは、シングルトンと呼ばれるデザインパターンの手法で、「CI_Controller」
のインスタンスを返します。
つまり、何度「get_instance()」を実行しても複数の「CI_Controller」インスタンスが作成されることは無く、
常に同じインスタンスを取得することができます。
取得できます。