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

更新日: 2016年2月25日

実行時間: 0.0390

CI_Loader

 CI_Loaderクラスは、各ファイルを読み込みますが、ファイルの種類により読込方法や返すデータが異なります。

 クラスファイルのライブラリ(library)やモデル(model)、データベース(database)ファイルを読み込むとそのクラスのインスタンスを生成します。

 ヘルパー(helper)ファイルを読み込むと、そのファイルに定義されている関数が利用可能となります。

 設定ファイル(config)、言語ファイル(lang)を読み込むと、「CI_Config」 クラス、または、「CI_Lang」クラスのインスタンスの 「load()」メソッドの エイリアスとして動作します。

 ビュー(view)、一般ファイル(file)を読み込むと、デフォルトの動作ではファイルの内容を出力します。 データを出力せず、ただデータを返すことも可能です。

 その他、ビューに渡すデータをセットしたり、そのデータを取得する機能や、パッケージパスの操作を行う機能があります。

CI_loaderの提供する機能

 CI_Loaderクラスが提供する機能について説明します。

is_loaded($class)

     「CI_Loader」の「library()」メソッド、 または、「autoload.php」 の自動ロード機能によって、ライブラリクラスが既に読み込まれているかチェックするメソッドです。
     引数には、ライブラリクラスファイル名から拡張子「.php」を除いたファイル名を指定します。

    $this->load->library('session');
    if ($library = $this->load->is_loaded('session')) {
        echo $library;
    }
    //=> session

library($library = '', $params = NULL, $object_name = NULL)

     ライブラリクラスをロードします。  第一引数には、ロードしたいライブラリのファイル名から「.php」拡張子を除いたファイル名を小文字で指定します。 配列を指定することで複数のライブラリをロードすることも可能です。
     第二引数には、ロードするライブラリクラスのコンストラクタの引数として渡したいデータを指定します。
     第三引数にロードするライブラリクラスを識別するインスタンス名を指定することで、 同じクラスを複数のインスタンスとしてロードすることが可能です。
     第一引数に配列を指定し複数のライブラリをロードする場合は、第三引数は無効となります。

     「application/libraries/」「system/libraries/」ディレクトリにあるライブラリクラスと 「application/third_party」配下のパッケージディレクトリ内の「libraries/」ディレクトリにあるライブラリクラスが対象となります。

  • インスタンスを生成
  • $this->load->library('email');
    $this->email->to('hoge@ci-guide.info')
        ->from('name@your.mailaddr')
        ->subject('件名')
        ->send();
  • コンストラクタにデータを渡す
  • $config['charset'] = 'ISO-2022-JP';
    $this->load->library('email', $config);
  • 別名のインスタンスを生成
  • $config['charset'] = 'ISO-2022-JP';
    $this->load->library('email', $config, 'thanks_mail');
    $this->load->library('email', $config, 'error_mail');

model($model, $name = '', $db_conn = FALSE)

     モデルクラスをロードします。  第一引数には、ロードしたいモデルクラスファイル名から「.php」拡張子を除いたファイル名を小文字で指定します。

     第二引数にロードするモデルクラスを識別するインスタンス名を指定することで、同じクラスを複数のインスタンスとしてロードすることが可能です。

     第三引数には、モデルクラスをロードする際にデータベースに接続するか「TRUE」「FALSE」で指定します。または、接続するデータベース名(database.phpの「$db連想配列のインデックス名)を指定すると、 指定されたデータベースに接続します。

  • インスタンスを生成
  • $this->load->model('item');
  • 別名のインスタンスを生成
  • $this->load->model('item, 'new_item');
    $this->load->model('item, 'campain_item');
  • データベースに接続してロード
  • $this->load->model('item, 'new_item, TRUE');
    $this->load->model('item, 'campain_item', 'campain_db');

database($params = '', $return = FALSE, $active_record = NULL) 一番上に戻る

     データベースオブジェクトを生成します。。
     第一引数に、「database.php」で設定したデータベース識別名を指定すると「database.php」で設定した情報を基に データベースに接続します。データベース識別子を指定しなかった場合は「default」の設定情報が使用されます。
     また、手動設定情報を連想配列で指定すると、その設定情報を基にデータベースに接続します。

     第二引数に「TRUE」を指定するとデータベースオブジェクトのインスタンスを返します。
    複数のデータベースを運用している場合は、個別にインスタンスを生成し、使い分けることができます。

     第三引数は、CodeIgniter独自仕様の「Active Recode」を利用するか 「TRUE」または、「FALSE」で指定します。
     第三引数を指定しなかった場合は、「database.php」設定ファイルの「$active_record」の設定値が適用されます。

  • default データベースに接続
  • $this->load->database();
  • 手動設定情報でデータベースに接続
  • $config = array(
        'hostname' => 'localhost',
        'database' => 'my_database',
        'username' => 'hoge',
        'password' => 'pass_4_hoge',
    );
    $this->load->database($config);
  • 複数データベースインスタンス
  • $db_primary = $this->load->database('default', TRUE);
    $db_secondary = $this->load->database('secondary', TRUE);

helper($helpers = array())
helpers($helpers = array()) 一番上に戻る

     ヘルパーファイルを読み込みます。
     引数には、配列で読み込みたいヘルパークラスファイル名の「_helper.php」を除いたファイル名を指定します。
     「helper()」メソッドの引数には、文字列で一つのヘルパーファイルを指定することも可能です。

  • 一つのヘルパーファイル読込
  • $this->load->helper('date');
  • 複数のヘルパーファイル読込
  • $helpers = array(
        'cookie',
        'directory',
    );
    $this->load->helper($helpers);
    $this->load->helpers($helpers);

language($file = array(), $lang = '') 一番上に戻る

     「CI_Lang」クラスの「load()」メソッドのエイリアスです。
     第一引数に読み込みたい言語ファイルの拡張子「_lang.php」を除いたファイル名を指定します。
     配列で複数の言語ファイルを指定することも可能です。
     第二引数は読み込みたい言語(サブディレクトリ名)を指定します。第二引数が指定されなかった場合は、 「application/config/config.php」の「$config['language']」の値が利用されます。

    $this->load->language('greeting', 'japanese');

config($file = '', $use_sections = FALSE, $fail_gracefully = FALSE) 一番上に戻る

     「CI_Config」クラスの「load()」メソッドのエイリアスです。
     第一引数に読み込みたい設定ファイルの拡張子「.php」を除いたファイル名を引数に指定します。
     第二引数に「TRUE」を指定すると、複数の異なる設定ファイルに同じ設定項目が 指定されていてもそれぞれの設定を読み込めるようになります。 詳しくは「CI_Config」クラスの項を参照してください。
     第三引数に「TRUE」を指定することで、設定ファイルが存在しない、または、$config設定変数が無いなどの ロードエラーがあった場合、「FALSE」が返るようになります。

    $this->load->config('my_config');

view($view, $vars = array(), $return = FALSE) 一番上に戻る

     ビューのテンプレートファイルを読み込みます。
     第一引数に読み込みたいビューのテンプレートファイルの拡張子「.php」を除いたファイル名を指定します。
     第二引数には、ビューにアサイン(渡す)データ(連想配列)を指定します。
     デフォルトでは、読み込まれたテンプレートはすぐに出力されますが、第三引数に 「TRUE」を指定することで、出力結果を返し変数に格納することができます。

    $this->load->view('my_template', $data);
    $html = $this->load->view('my_template', $data, TRUE);

file($path, $return = FALSE) 一番上に戻る

     ファイルを読込みます。テキストファイルや画像ファイル、CSVファイルなどの出力に利用します。
     第一引数には、読み込みたいファイルをドキュメントルートからの相対パスか絶対パスで指定します。
     デフォルトでは「view()」メソッドと同様に読み込んだデータはすぐに出力されますが、 第三引数に「TRUE」を指定することで、出力結果を返し変数に格納することができます。

    $this->output->set_content_type('text/plain');
    $this->load->file('../license.txt');
     ファイルを出力する際は、HTTPヘッダの「Content-Type:」を指定することで、ブラウザで適切な描画処理が行われます。

vars($vars = array(), $val = '') 一番上に戻る

     ビューで利用するデータをセットします。「view()」メソッドの第二引数にデータを渡す方法と違うところは、 複数回の「view()」メソッドで読み込んだテンプレートで共通で利用できることとなります。
     Smartyテンプレートエンジンの「assign()」メソッドに似ています。
     第一引数には、テンプレートでデータを利用する際の識別子(変数名)を指定します。
     第二引数には、第一引数の識別子で展開されるデータを指定します。
     また、連想配列データで一括してセットすることも可能です。

    $this->load->vars('name', 'Ichiro Suzuki');
    $data = array(
        'name' => 'Ichiro Suzuki',
        'age' => '38'
    )
    $this->load->vars($data);

get_var($key) 一番上に戻る

     「vars()」メソッドでセットしたデータを返します。一度セットしたデータをコントローラなどから操作する際に利用します。
     第一引数に「vars()」メソッドでセットする際に指定した識別子(変数名)を指定することで、それに割り当てられたデータを返します。

    $name = $this->load->get_var('name');
    echo $name;
    //=> Ichiro Suzuki

add_package_path($path, $view_cascade=TRUE) 一番上に戻る

     サードパーティパッケージパスを追加設定します。
    「authoload.php」設定ファイルの「$autoload['packages']」でグローバルに設定できますが、 「add_package_path()」メソッドでは特定の場所で手動設定する場合に利用します。
     第一引数に、パッケージがインストールされているパスを指定します。通常は「application/third_paty/」ディレクトリの サブディレクトリを指定します。
     第二引数は、パッケージの「third_party/some_pkg/views/」ディレクトリとデフォルトの「application/views/」ディレクトリに 同名のビューファイルがある場合、デフォルトを利用するか、パッケージのビューファイルを読み込むか指定するために用意されています。
     しかし、第二引数は、「CodeIgniter 2.1.0」ではバグのため機能していません。

    $this->load->add_package_path(APPPATH . 'third_paty/some_pkg');

get_package_paths($include_base = FALSE) 一番上に戻る

     セットされているパッケージパスを配列で返します。
     パッケージパスは「autoload.php」の「$autoload['packages']」でセットされたパスと、「add_package_path()」でセットされたパスに加え、 「application/」ディレクトリも含まれます。
     また、第二引数に「TRUE」を指定すると「system/」ディレクトリも含まれるようになります。

    $paths = $this->load->get_package_paths();
    print_r($paths);
    /*
    Array (
      [0] => ../application/third_party/some_pkg/
      [1] => ../application/
    )
    */

remove_package_path($path = '') 一番上に戻る

     「autoload.php」の「$autoload['packages']」で設定したパス、及び、「add_package_path()」でセットされたパスを削除します。
     引数なしで実行すると最後に追加されたパスが削除されます。
     引数に削除したいパスを指定すると、特定のパスが削除されます。
     「application/」ディレクトリパスと「system/」ディレクトリパスは削除されることはありません。

  • 最後に追加されたパスを削除
  • $this->load->remove_package_path();
  • 特定のパスを削除
  • $this->load->remove_package_path(APPPATH . 'third_party/some_pkg');

dbutil() 一番上に戻る

     「system/database/DB_utility.php」の「CI_DB_utility」クラスをロードします。
     「CI_DB_utility」クラスの詳しい利用方法は別の章で説明します。

  • データベースユーティリティのロード
  • $this->load->dbutil();
  • データベースユーティリティの利用
  • $this->dbutil->list_databases();

dbforge() 一番上に戻る

     「system/database/DB_forge.php」の「CI_DB_forge」クラスをロードします。
     「CI_DB_forge」クラス」の詳しい利用方法は別の章で説明します。

  • データベースユーティリティのロード
  • $this->load->dbforge();
  • データベースユーティリティの利用
  • $this->dbforge->create_database('my_db');