読者です 読者をやめる 読者になる 読者になる

at kaneshin

Free space for me.

【基礎】CodeIgniterでコアクラスを作成する

この記事はCodeIgniter Advent Calendar 2013 の 1 日目の記事です。

今年はPHPについてAdvent Calendarを書きたかったんですよ!

そしたらPHP Advent Calendar 2013は全て埋まってたわけで…

しょうがないので書きたかったCodeIgniter のAdvent Calendar作ったら誰も登録しない!!

_人人人人人人_
>  Nobody  <
 ̄YYYYYY ̄

後々誰かが登録してくれるのを気長に待ちましょう。

さて、書く内容ですが、とりあえず基本中のコアクラスの拡張方法でも紹介しましょうか。

Core Classes

まぁ、公式に書いてあるのですがね!

ほとんどが上記の引用ですよ!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ではちゃんと拡張する方法を用意しております。

コアシステムクラスを作成する

作成方法はめっちゃ簡単です。作成する順序をコントローラーを例に述べると。

  1. ./application/core/ の中にMY_Controller.php を作成する
  2. クラス名をMY_Controllerにし、CI_Controllerを継承させる
  3. コンストラクタで親クラスのコンストラクタを呼ぶ
  4. 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を使用して、いろいろ書きたいこともあるので。