ローダ(読み込み処理)クラス
ローダは、その名のとおり要素をロードするために使用されます。 要素とは、ライブラリ (クラス) ビューファイル、ヘルパー、モデル、あるいは、ユーザファイルになります。
Note: このクラスは、システムで自動的に初期化されるので、手動で初期化する必要はありません。
このクラスでは下記のメソッドが利用できます:
$this->load->library('class_name', $config, 'object name')
このメソッドはコアのクラスを読み込むために使われます。ここでの class_name は読み込みたいクラスの名前になります。 Note: "クラス" と "ライブラリ"は同じ意味として使っています。
たとえば、CodeIgniter でメールを送信したいとしたら、最初のステップは、次のように email クラスをコントローラで読み込むことです:
$this->load->library('email');
ロードすると、ライブラリを $this->email->some_function() などとして使う準備ができたことになります。各ライブラリは、それらの解説ページで説明していますので、使いたいそれぞれのクラスについての情報をお読みください。
ライブラリファイルは、メインの "libraries" フォルダ内か、アプリケーション独自の application/libraries フォルダ内にサブディレクトリを設置し、 そこに保存することが出来ます。サブディレクトリ内のファイルをロードするには、単純に "libraries" フォルダ内のパスを含めます。 たとえば、以下のようにファイルが配置されているなら:
libraries/flavors/chocolate.php
利用するには以下のようにロードします:
$this->load->library('flavors/chocolate');
ファイルを置けるサブディレクトリの階層の数と深さに制限はありません。
さらに、複数のライブラリをロードメソッドへ配列で渡すことによって、同時にロードすることができます。
$this->load->library(array('email', 'table'));
オプション設定
第2引数(オプション)で、任意の設定情報を渡す事が出来ます。通常これらは配列として渡されます:
$config = array (
'mailtype' => 'html',
'charset' => 'utf-8,
'priority' => '1'
);
$this->load->library('email', $config);
設定ファイルで設定情報を定義する事も出来ます。各ライブラリのページで説明されていますので、利用したいライブラリのページをご覧ください。
第1引数に配列で複数のライブラリが提供された場合、各々のライブラリは同じパラメータ情報を受け取ることに注意してください。
ライブラリに別名を割り当てる
第3引数(オプション)が指定されていなければ、ライブラリには通常、ライブラリと同じ名前がオブジェクト名として割り当てられます。 たとえば、ライブラリ名が Session であれば、$this->session という変数が割り当てられます。
自分自身でクラス名を指定したいなら、第3引数でその値を渡す事が出来ます:
$this->load->library('session', '', 'my_session');
// Session クラスにアクセスするには、以下のようになります:
$this->my_session
第1引数に配列で複数のライブラリが提供された場合、このパラメータは破棄されることに注意してください。
$this->load->view('file_name', $data, true/false)
このメソッドは、ビューファイルをロードするために使用します。 ユーザガイドのビューのセクションをまだ読んでいない場合は、このメソッドの典型的な使い方を説明しているので、読んでみることをおすすめします。
第1引数は必須です。第1引数は読み込みたいビューファイルの名前になります。Note: php ファイルの拡張子は不要で、指定する名前は .php を除いたものになります。
オプションの第2引数は、連想配列またはオブジェクトを入力とします。 指定した連想配列またはオブジェクトは、ビューファイルの中で使用するために、 PHPの extract 関数を使用して変数に変換されます。 再度いいますが、使い方を説明したビューの解説ページをお読みください。
オプションの第3引数はブラウザにデータを送信するのではなく、文字列としてデータを返すようメソッドの振る舞いを変えるものです。 これは、何らかの方法でデータを処理したいときに役立ちます。パラメータを true (ブール値) にセットしたとき、データを返します。 デフォルトの動作は、ブラウザにデータを送信する設定の false になっています。 データを返すようにしたときは、変数に代入するのを忘れないでください:
$string = $this->load->view('myfile', '', true);
$this->load->model('Model_name');
$this->load->model('Model_name');
もし、モデルファイルがサブフォルダに置かれている場合、モデルフォルダからの相対バスで指定してください。たとえば、モデルファイルが、application/models/blog/queries.php にある場合、以下のようにロードします:
$this->load->model('blog/queries');
もし、モデルオブジェクトに別の名前を付けたい場合は、 load メソッドの第2引数で指定できます:
$this->load->model('Model_name', 'fubar');
$this->fubar->function();
$this->load->database('options', true/false)
このメソッドで、データベースクラスをロードできます。第2引数は、オプションです。 詳細は、データベースのセクションをご覧ください。
$this->load->vars($array)
このメソッドは、連想配列を入力として、PHP の extract 関数を使って変数を生成します。 上の $this->load->view() メソッドの第2引数を使った場合と同じ結果が生成されます。 このメソッドを上とは独立に使う理由は、コントローラのコンストラクタでグローバル変数をセットし、 それらをどんなビューファイルのどんなメソッドからも利用できるようにするためです。 このメソッドは複数回呼び出すことができます。データは変数に変換するために一つの配列にキャッシュされマージされます。
$this->load->get_var($key)
このメソッドは、ビューで使用可能な変数の連数配列をチェックします。これは、何らかの理由でライブラリや他のコントローラのメソッドが $this->load->vars() を使用して変数をセットする場合に役立ちます。
$this->load->helper('file_name')
このメソッドで、ヘルパーファイルをロードします。ここでの file_name は_helper.php の拡張子 [ 訳注: およびサフィックス ] を除外したファイルの名前です。
$this->load->file('filepath/filename', true/false)
これは、汎用のファイルロードメソッドです。 ファイルのパスと名前を第1引数で指定すると、そのファイルが開かれ、読み込まれます。 デフォルトでは、ちょうどビューファイルのように、データはブラウザに送信されますが、第2引数に true (ブール値)をセットすると、代わりにデータを文字列として返すようになります。
$this->load->lang('file_name')
このメソッドは、言語の読み込みメソッドへのエイリアス(別名)です: $this->lang->load()
$this->load->config('file_name')
このメソッドは、設定ファイルの読み込みメソッドのエイリアス(別名) です: $this->config->load()
アプリケーションパッケージ
アプリケーションパッケージとは 配布を容易にするために それ自身の単一ディレクトリ内にライブラリ、モデル、ヘルパー、コンフィグ、そして言語ファイルをすべて備えたリソースの集合です。これらパッケージは application/third_party フォルダに配置することを推奨します。以下はパッケージのディレクトリ構成例です。
サンプルパッケージ "Foo Bar" のディレクトリ構成
以下は "Foo Bar" アプリケーションパッケージのディレクトリ構成例です。
/application/third_party/foo_bar
config/
helpers/
language/
libraries/
models/
サンプルアプリケーションパッケージである "Foo Bar" のここでの目的は 設定ファイル、ヘルパー、言語ファイル、ライブラリ、そしてモデルを配置することです。これらのリソースをあなたのコントローラで使用するには、まず初めにLoaderに対して パッケージパスを追加して、読み込みたいリソースを伝える必要があります。
$this->load->add_package_path()
Loaderクラスにパッケージパスを追加する処理は与えられたパッケージパスを 後で要求されるリソース名の先頭に追加します。たとえば、上述の "Foo Bar" アプリケーションパッケージは Foo_bar.php という名前のライブラリを持っています。コントローラーでは以下のように記述します:
$this->load->add_package_path(APPPATH.'third_party/foo_bar/');
$this->load->library('foo_bar');
$this->load->remove_package_path()
あなたのコントローラーが あるアプリケーションパッケージのリソースを使い終えたときに、あなたが他のアプリケーションパッケージを持っていて それを使いたいならば、あなたは使い終えた方のパッケージパスを取り除きたいかもしれません、そうすれば Loader は そのリソースのフォルダを見ることはなくなります。最後に追加されたパスを除去するには、このメソッドを引数無しで呼ぶだけです。
$this->load->remove_package_path()
または特定のパッケージパスを取り除くには、add_package_path() で追加したパッケージ と同じパスを引数で指定します:
$this->load->remove_package_path(APPPATH.'third_party/foo_bar/');
パッケージのビューファイル
デフォルトでは、パッケージのビューファイルは add_package_path() が呼び出されたときに設定されます。ビューのパスはループで処理され、一旦一致するとそのビューファイルが読み込まれます。
この場合は、パッケージ内でビューファイル名が衝突を起こしているか、不適切なパッケージが読み込まれている可能性があります。そのようなことが起こらないようにするためには、add_package_path() を呼び出す際に、オプションの第2引数に FALSE を設定してください。
$this->load->add_package_path(APPPATH.'my_app', FALSE);
$this->load->view('my_app_index'); // 読み込む
$this->load->view('welcome_message'); // add_package_path の第2引数に FALSE を設定しているため、デフォルトの welcome_message は読み込まれない
// リセットする
$this->load->remove_package_path(APPPATH.'my_app');
// 第2引数抜きで、もう1度:
$this->load->add_package_path(APPPATH.'my_app', TRUE); [ 訳注: 第2引数の削除忘れか? ]
$this->load->view('my_app_index'); // 読み込む
$this->load->view('welcome_message'); // 読み込む