Qiitaに書かないと投稿できないんですね!
こっちに書いちゃいましたよ!!
この記事は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.
つまり、下記を./application/core の中にMY_Controller.php という名前で作成します。
class MY_Controller extends CI_Controller {
function __construct()
{
parent::__construct();
// something
}
}
./application/controllers の中にあり、ベースとなるコントローラーの継承元をMY_Controllerにします。
例えば、./application/controllers/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を使用して、いろいろ書きたいこともあるので。