このエントリーをはてなブックマークに追加

更新日: 2016年2月25日

実行時間: 0.0112

CodeIgniter システムファイル拡張

 CodeIgniterにデフォルトで備わっているクラスファイルには、 「 system/core/ 」ディレクトリに配置されているコアクラスファイルと 「 system/libraries/ 」ディレクトリに配置されているライブラリクラスファイルがあります。
 また、クラスファイルではないですが「 system/helpers/ 」ディレクトリにはヘルパーファイルがあります。

 通常、これらのクラスファイルを直接編集してはいけません。 これらのクラスファイルを拡張・修正するには、以下に説明する方法で拡張します。

拡張ファイルの配置

 コアクラス、ライブラリクラス、ヘルパーファイルを拡張するためのファイルはそれぞれ、 以下のディレクトリに配置します。

    • コアクラス
    application/core/

    • ライブラリクラス
    application/libraries/

    • ヘルパーファイル
    application/helpers/

拡張ファイルのファイル名・クラス名

  • ファイル名

 拡張ファイルのファイル名は、拡張したい元のファイル名に「 application/config/config.php 」
設定ファイルの「 $config['subclass_prefix'] 」 で設定したプリフィックスを追加したものになります。
 デフォルトは「 MY_ 」です。

    • system/core/Controller.php
    application/core/MY_Controller.php

    • system/libraries/Cart.php
    application/libraries/MY_Cart.php

    • system/helpers/date_helper.php.php
    application/libraries/MY_date_helper.php

  • クラス名

 派生クラスのクラス名は、親クラスクラス名の「 CI_ 」プリフィックスを「 application/config/config.php 」 設定ファイルの「$config['subclass_prefix']」で設定したプリフィックスに置き換えたものになります。

    • CI_Controller
    MY_Controller

    • CI_Cart
    MY_Cart

     ヘルパーはクラスではないので、当然クラス名を定義する必要はありません。

コンストラクタ

 コンストラクタに追加処理を行わせるには、親クラスの「 __construct() 」メソッドの引数と同じものを受け付け、 更に、親クラスの「 __construct() 」メソッドの引数に指定する必要があります。

    class MY_Calendar extends CI_Calendar {

        public function __construct($config)
        {
            parent::__construct($config);
            log_message('debug', 'MY_Calendar initilized.');
        }

    }

メソッド・関数の拡張

 コアクラス、ライブラリクラスのメソッドは、拡張ファイルの派生クラスで新たに追加するメソッドを定義したり、 既存のメソッドをオーバーライドして改編することができます。

 ヘルパーはクラスではないのですが、新たに独自の関数を追加したり、既存の関数を改編することが可能です。  クラスの拡張同様、変更しない既存の関数は再定義することなく利用することができます。