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

更新日: 2016年2月25日

実行時間: 0.0218

ユーザライブラリ

 CodeIgniterでは、ユーザ独自のライブラリクラスを作成することが可能です。
 新たに作成したユーザライブラリクラスは、CodeIgniterにデフォルトで備わっているライブラリクラス と同様に扱うことが可能です。

 この項では、ユーザライブラリの作成方法、設定ファイル、利用方法について解説しています。

ユーザライブラリの作成

  • ユーザライブラリファイルの配置

 ユーザライブラリクラスファイルは「 application/libraries/ 」ディレクトリ配下に設置します。
 また、サブディレクトリを作成して、その配下に配置することも可能です。

  • ユーザライブラリクラス名

 ユーザライブラリクラスのクラス名は、CodeIgniterのライブラリクラス名である「CI_」プリフィックス を付けることはできません。それ以外は、PHPのクラス名ルールに則っていれば特に制限はありません。

  • ユーザライブラリクラスファイル名

 ユーザライブラリクラスのファイル名は、クラス名の先頭を小文字にして、「.php」拡張子を付けたものになります。

    application/libraries/userlib.php
    class Userlib {
    }
    application/libraries/subdir/mylib.php
    class Mylib {
    }

ユーザライブラリの設定ファイル

 CodeIgniterのシステムライブラリクラス同様、ユーザライブラリクラスでもデフォルトの設定値を定義する 設定ファイルを用意することができます。

  • 設定ファイルの配置

 設定ファイルは、「 application/config/ 」に配置します。

  • 設定ファイルのファイル名

 設定ファイルのファイル名は、ユーザライブラリクラスファイル名と同じファイル名で作成します。

  • 設定情報の定義

 設定ファイルの設定値の定義は、連想配列で変数名を「 $config 」として定義します。

    application/config/userlib.php
    <?php

    $config = array(
        'key_0' => 'value_0',
        'key_1' => 'value_1',
        'key_2' => 'value_2',
    );

ユーザライブラリのロードと利用

  • ユーザライブラリクラスのロード

 ユーザライブラリクラスのロードは、CodeIgniterのシステムライブラリクラスと同様に、 「 CI_Loader 」クラスの「 library() 」メソッドの引数に、クラス名の先頭文を小文字にした 文字列を指定してロードします。

    $this->load->library('userlib');

 また、第二引数に連想配列を指定することで、設定ファイルからのデフォルト設定を利用せず、 個別に設定情報をコンストラクタに渡すことが可能です。

    $config['key_0'] = 'value_0';
    $config['key_1'] = 'value_1';
    $this->load->library('userlib', $config);

 第三引数には、ライブラリクラスのインスタンス名を指定することで、 複数のインスタンスを個別に生成することも可能です。

    $config['key_0'] = 'value_0';
    $config['key_1'] = 'value_1';
    $this->load->library('userlib', $config, 'mylib');
    $this->load->library('userlib', NULL, 'anotherlib');

  • ユーザライブラリの利用

 インスタンス名を指定せずにロードしたライブラリクラスは、「 CI_Loader 」クラスの 「 library() 」メソッドの引数で指定した、ライブラリ名がインスタンス名となり、 「 Controller 」インスタンス、または、「 Model 」インスタンスのプロパティ変数からアクセス可能になります。

    $this->load->library('userlib');

    $this->userlib->my_func();

 「 CI_Loader 」クラスの「 library() 」メソッドの第三引数に、インスタンス名を指定した場合は、
そのインスタンス名が「 Controller 」インスタンス、または、「 Model 」インスタンスのプロパティ変数名
になります。

    $this->load->library('userlib', NULL, 'mylib');

    $this->mylib->my_func();