10
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CodeIgniterAdvent Calendar 2013

Day 1

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

Last updated at Posted at 2013-11-30

Qiitaに書かないと投稿できないんですね!
こっちに書いちゃいましたよ!!

この記事は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.

つまり、下記を./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を使用して、いろいろ書きたいこともあるので。

10
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?