【基礎】CodeIgniterでコアクラスを作成する
この記事はCodeIgniter Advent Calendar 2013 の 1 日目の記事です。
今年はPHPについてAdvent Calendarを書きたかったんですよ!
そしたらPHP Advent Calendar 2013は全て埋まってたわけで…
しょうがないので書きたかったCodeIgniter のAdvent Calendar作ったら誰も登録しない!!
_人人人人人人_ > Nobody <  ̄YYYYYY ̄
後々誰かが登録してくれるのを気長に待ちましょう。
さて、書く内容ですが、とりあえず基本中のコアクラスの拡張方法でも紹介しましょうか。
まぁ、公式に書いてあるのですがね!
ほとんどが上記の引用ですよ!CodeIgniterは公式のだけで十分使えるんですよね!!素晴らしい。
コアシステムクラスの拡張
コアシステムクラスって?
systemフォルダにあるファイルのことで、CodeIgniterを使用する開発者は直接いじらないやつらです。
├── application ├── index.php ├── license.txt ├── system │ ├── core │ │ ├── Benchmark.php │ │ ├── CodeIgniter.php │ │ ├── Common.php │ │ ├── Config.php │ │ ├── Controller.php │ │ ├── Exceptions.php │ │ ├── Hooks.php │ │ ├── index.html │ │ ├── Input.php │ │ ├── Lang.php │ │ ├── Loader.php │ │ ├── Model.php │ │ ├── Output.php │ │ ├── Router.php │ │ ├── Security.php │ │ ├── URI.php │ │ └── Utf8.php │ ├── database ...
コアシステムクラスをいじりたい
デフォルトに用意されているコントローラーのwelcome.php (Location: ./application/controllers/welcome.php) はCI_Controllerを継承しています。
class Welcome extends CI_Controller { public function index() { $this->load->view('welcome_message'); } }
普通、ベースとなるコントローラーを用意し、それを継承させて開発を行いたいですが、 既にCI_Controllerなるものが継承されているため、共通に処理させたいものを記述したい際にこまります。
そんなとき、CodeIgniterではちゃんと拡張する方法を用意しております。
コアシステムクラスを作成する
作成方法はめっちゃ簡単です。作成する順序をコントローラーを例に述べると。
- ./application/core/ の中にMY_Controller.php を作成する
- クラス名をMY_Controllerにし、CI_Controllerを継承させる
- コンストラクタで親クラスのコンストラクタを呼ぶ
- MY_Controllerクラスを使用したいクラスで継承させる
That's it.
つまり、下記を作成します
class MY_Controller extends CI_Controller { function __construct() { parent::__construct(); // something } }
welcome.phpの継承元をCI_ControllerからMY_Controllerに変更します。
class Welcome extends MY_Controller { public function index() { $this->load->view('welcome_message'); } }
これだけです!!!めっちゃ簡単!公式ドキュメントにも書いてあるよ!
終わり
CodeIgniterのコアクラスを直でいじらず、ちゃんと継承したクラスを作成しましょう。
CodeIgniterの超基礎でした。
次回のCodeIgniter Advent Calendar2013
誰も書かないなら明日も書くかも。書かないかも。 緩くやりたいと思います。一年間CodeIgniterを使用して、いろいろ書きたいこともあるので。