ローダ(読み込み処理)クラス¶
ローダは、名前が示すように、要素をロードするために使用されます。 それら要素は ビューファイル 、 ドライバー 、 ヘルパー 、 モデル 、または独自のファイルをライブラリ(クラス)とすることができます。
注釈
このクラスはシステムによって自動的に初期化されますので、 手動で初期化する必要はありません。
アプリケーションの「パッケージ」¶
アプリケーションパッケージはリソースの完全なセットを単一のディレクトリにいれて 簡単に配布することができます。それには独自のライブラリ、 モデル、ヘルパー、設定、および言語ファイルを揃えられます。これらのパッケージは application/third_party ディレクトリに配置することをおすすめします。 後述はパッケージディレクトリのサンプルマップです。
以下は「 Foo Bar 」という名前のアプリケーションパッケージの ディレクトリ例です。
/application/third_party/foo_bar
config/
helpers/
language/
libraries/
models/
「 FooBar 」アプリケーションパッケージの目的は何であれ、 それは独自の設定ファイル、ヘルパー、言語ファイル、ライブラリ、およびモデルを持っています。 コントローラ内でこれらのリソースを使用するには、 まずパッケージからリソースをロードするようローダに指示する必要があります。 それは add_package_path() メソッドによってパッケージパスを追加することで可能です。
パッケージのビューファイル¶
デフォルトでは 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'); // デフォルトの welcome_message は読み込まれません。なぜなら add_package_path の第 2 引数が FALSE だからです
// リセットします
$this->load->remove_package_path(APPPATH.'my_app');
// 第 2 引数なしでやり直します:
$this->load->add_package_path(APPPATH.'my_app');
$this->load->view('my_app_index'); // 読み込まれます
$this->load->view('welcome_message'); // 読み込まれます
クラスリファレンス¶
- class CI_Loader¶
- library($library[, $params = NULL[, $object_name = NULL]])¶
パラメータ: - $library (mixed) – ライブラリ名の文字列または複数ライブラリ名の配列
- $params (array) – ロードされたライブラリのコンストラクタに渡す配列(オプション)
- $object_name (string) – ライブラリを割り当てるオブジェクト名(オプション)
返り値: CI_Loader インスタンス(メソッドチェイン)
返り値の型: CI_Loader
このメソッドはコアクラスをロードするために使用されます。
注釈
私たちは「クラス」と「ライブラリ」という用語を互換性があるものとして使用します。
たとえば CodeIgniter でメールを送信したい場合、 最初のステップはコントローラ内で Email クラスをロードすることです:
$this->load->library('email');
いちどロードされれば、ライブラリを使用できる準備が整います。つまり $this->email を使用できます。
ライブラリファイルは、メインの 「 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);
設定オプションは通常、 Config ファイルにより設定することもできます。 各ライブラリはそれぞれのページで詳しく説明されています。 使いたいものについてそれぞれの情報をお読みください。
注意すべきこととして、第 1 引数に配列で複数のライブラリを渡されると、 それぞれ同じパラメータ情報を受け取ることになります。
ライブラリに別のオブジェクト名を割り当てる
第 3 引数(オプション) が渡されない場合、通常、 ライブラリはそれと同じ名前のオブジェクトに割り当てられます。たとえば Calendar というライブラリの場合、それは $this->calendar という名前の変数に代入されます。
独自のクラス名を設定したい場合、 第 3 引数にその値を渡すことができます:
$this->load->library('calendar', NULL, 'my_calendar'); // Calendar クラスはいま、このようにアクセスできます: $this->my_calendar
注意すべきこととして、第 1 引数に配列で複数のライブラリを渡されると、 この引数は無視されます。
- driver($library[, $params = NULL[, $object_name]])¶
パラメータ: - $library (mixed) – ライブラリ名の文字列または複数ライブラリ名の配列
- $params (array) – ロードされたライブラリのコンストラクタに渡す配列(オプション)
- $object_name (string) – ライブラリを割り当てるオブジェクト名(オプション)
返り値: CI_Loader インスタンス(メソッドチェイン)
返り値の型: CI_Loader
このメソッドはドライバライブラリをロードするために使用され、 library() メソッドにとてもよく似た役割を果たします。
例として、 CodeIgniter のセッションを使用したい場合、 その最初の一歩はコントローラ内でセッションドライバをロードすることです:
$this->load->driver('session');
いちどロードされれば、ライブラリを使用できる準備が整います、つまり $this->session を使用できます。
ドライバファイルは、メインの「 libraries 」ディレクトリ内のサブディレクトリか、 またはあなたの個人的な application/libraries 内に格納することができます。 サブディレクトリは親クラス名と一致させなければなりません。 詳しくは ドライバ の説明をお読みください。
さらに、ドライバライブラリの配列をロードメソッドに渡すことによって、 いちどに複数のロードをすることができます。
$this->load->driver(array('session', 'cache'));
設定オプション
第 2 引数(オプション) を使用すると、コンフィグ設定を任意で渡すことができます。 通常、これらは配列として渡します:
$config = array( 'sess_driver' => 'cookie', 'sess_encrypt_cookie' => true, 'encryption_key' => 'mysecretkey' ); $this->load->driver('session', $config);
設定オプションは通常、 Config ファイルにより設定することもできます。 各ライブラリはそれぞれのページで詳しく説明されています。 使いたいものについてそれぞれの情報をお読みください。
ライブラリに別のオブジェクト名を割り当てる
第 3 引数(オプション)が渡されない場合、 ライブラリは親クラスと同じ名前のオブジェクトに割り当てられます。 たとえば Session というライブラリの場合、 それは $this->session という名前の変数に代入されます。
独自のクラス名を設定したい場合、 第 3 引数にその値を渡すことができます:
$this->load->library('session', '', 'my_session'); // Session クラスはいまこのようにアクセスできます: $this->my_session
- view($view[, $vars = array()[, return = FALSE]])¶
パラメータ: - $view (string) – ビュー名
- $vars (array) – 変数の連想配列
- $return (bool) – ロードされたビューを返すかどうか
返り値: $return を TRUE に設定した場合は表示内容の文字列、そうでなければ CI_Loader インスタンス(メソッドチェイン)
返り値の型: mixed
このメソッドはビューファイルをロードするために使用します。 もしユーザガイドの ビュー セクションを読んでいない場合、 まずそちらをおすすめします。 この方法の一般的な使用方法が記されています。
第 1 引数は必須です。 それはロードしたいビューファイルの名前です。
注釈
.php の以外のものを使用しない限り、 .php ファイル拡張子を指定する必要はありません。
省略可能な 第 2 引数は連想配列またはオブジェクトを渡すことができます。 それは実行中に PHP の extract() 関数を使ってビューファイルで使用できる変数に変換されます。 繰り返します、 ビューページ をお読みください。 これがどれだけ使えるかを学べます。
省略可能な 第 3 引数はメソッドの動作を変更することができます、 ブラウザに送信するのではなく、文字列としてデータを返すようにです。 これは、なにかしらデータを処理したい場合に便利です。 このパラメータを TRUE(真偽値)に設定すると、データが返されます。 デフォルトの動作は FALSE で、これはブラウザにデータを送信します。 データを返すようにしたときは変数に代入するのを忘れないでください:
$string = $this->load->view('myfile', '', TRUE);
- vars($vars[, $val = ''])¶
パラメータ: - $vars (mixed) – 変数の配列または単一の変数名
- $val (mixed) – 変数値(オプション)
返り値: CI_Loader インスタンス(メソッドチェイン)
返り値の型: CI_Loader
このメソッドは入力として連想配列を取り、 PHP の extract() 関数を使用して変数を生成します。このメソッドは上記 $this->load->view() メソッドの第 2 引数を使用した場合と同じ結果が得られます。 独立してこのメソッドを使用するべき理由としては、 コントローラのコンストラクタでグローバル変数を設定し、 それらを不特定のメソッドからロードされる任意のビューファイルで利用したい場合です。 このメソッドは複数回呼び出すことができます。 データは蓄えられ、変数展開のために1つの配列にマージされます。
- get_var($key)¶
パラメータ: - $key (string) – 変数名のキー
返り値: キーがある場合はその値、ない場合は NULL
返り値の型: mixed
このメソッドはビューで利用可能な変数からなる連想配列を確認します。 ライブラリまたは別のコントローラメソッドで $this->load->vars() を用いて変数を設定していることを何らかの理由で確認したい場合に便利です。
- get_vars()¶
返り値: 割り当てられたすべてのビュー変数の配列 返り値の型: array このメソッドはビューで使用可能なすべての変数を取得します。
- clear_vars()¶
返り値: CI_Loader インスタンス(メソッドチェイン) 返り値の型: CI_Loader 貯め込まれているビュー変数を消去します。
- model($model[, $name = ''[, $db_conn = FALSE]])¶
パラメータ: - $model (mixed) – モデル名または複数のモデル名を含む配列
- $name (string) – モデルを割り当てるオブジェクト名(オプション)
- $db_conn (string) – ロードするデータベース設定グループ(オプション)
返り値: CI_Loader インスタンス(メソッドチェイン)
返り値の型: CI_Loader
$this->load->model('model_name');
モデルがサブディレクトリに配置されている場合、 models ディレクトリからの相対パスを含めます。たとえば application/models/blog/Queries.php にモデルがある場合、次のようにロードします:
$this->load->model('blog/queries');
モデルに別のオブジェクト名を割り当てたい場合は ロードメソッドの第 2 引数により指定することができます:
$this->load->model('model_name', 'fubar'); $this->fubar->method();
- database([$params = ''[, $return = FALSE[, $query_builder = NULL]]])¶
パラメータ: - $params (mixed) – データベースグループ名または設定オプション
- $return (bool) – ロードされたデータベースオブジェクトを返すかどうか
- $query_builder (bool) – クエリビルダをロードするかどうか
返り値: $return が TRUE に設定されている場合は CI_DB インスタンスか失敗時に FALSE 、そうでなければ CI_Loader インスタンス(メソッドチェイン)
返り値の型: mixed
このメソッドではデータベースクラスをロードできます。 2 つの引数は 省略可能 です。詳しくは データベース セクションをご覧ください。
- dbforge([$db = NULL[, $return = FALSE]])¶
パラメータ: - $db (object) – データベースオブジェクト
- $return (bool) – データベースフォージのインスタンスを返すかどうか
返り値: $return が TRUE に設定されている場合は CI_DB_forge インスタンスか失敗時に FALSE 、そうでなければ CI_Loader インスタンス(メソッドチェイン)
返り値の型: mixed
データベースフォージ クラスをロードします、 より詳しくはそのマニュアルを参照してください。
- dbutil([$db = NULL[, $return = FALSE]])¶
パラメータ: - $db (object) – データベースオブジェクト
- $return (bool) – データベースユーティリティのインスタンスを返すかどうか
返り値: $return が TRUE に設定されている場合は CI_DB_utility インスタンスか失敗時に FALSE 、そうでなければ CI_Loader インスタンス(メソッドチェイン)
返り値の型: mixed
データベースユーティリティ クラスをロードします。 詳細はそのマニュアルを参照してください。
- helper($helpers)¶
パラメータ: - $helpers (mixed) – ヘルパー名文字列、または複数のヘルパー名を含む配列
返り値: CI_Loader インスタンス(メソッドチェイン)
返り値の型: CI_Loader
このメソッドはヘルパーファイルをロードします。 file_name は ファイルの名前で、 _helper.php 拡張子は不要です。
- file($path[, $return = FALSE])¶
パラメータ: - $path (string) – ファイルパス
- $return (bool) – ロードされたファイルを返すかどうかを
返り値: $return が TRUE に設定されている場合は ファイルの内容、そうでなければ CI_Loader インスタンス(メソッドチェイン)
返り値の型: mixed
これは汎用的なファイルをロードするメソッドです。 第 1 引数にファイルパスと名前を指定すれば、そのファイルが開かれ、読み込まれます。 デフォルトではデータはちょうどビューファイルのようにお使いのブラウザに送信されますが、 第 2 引数に TRUE を設定している場合はかわりにデータを文字列として 返します。
- language($files[, $lang = ''])¶
パラメータ: - $files (mixed) – 言語ファイル名または複数の言語ファイル名の配列
- $lang (string) – 言語名
返り値: CI_Loader インスタンス(メソッドチェイン)
返り値の型: CI_Loader
このメソッドは 言語読み込み メソッド: $this->lang->load() のエイリアスです。
- config($file[, $use_sections = FALSE[, $fail_gracefully = FALSE]])¶
パラメータ: - $file (string) – 設定ファイル名
- $use_sections (bool) – 設定値を独自のセクションにロードするかどうか
- $fail_gracefully (bool) – 失敗した場合に FALSE を返すだけにするかどうか
返り値: 成功した場合に TRUE 、失敗した場合に FALSE
返り値の型: bool
このメソッドは 設定読み込み メソッド: $this->config->load() のエイリアスです。
- is_loaded($class)¶
パラメータ: - $class (string) – クラス名
返り値: 見つかった場合は単一のプロパティ名、そうでない場合は FALSE
返り値の型: mixed
クラスがすでにロードされているかどうかを確認できます。
注釈
ここでの単語「クラス」は、ライブラリやドライバを指します。
要求されたクラスがロードされている場合、このメソッドはそのクラスが割り当てられた CI スーパーオブジェクト内の名前を返します。そうでない場合は FALSE を返します:
$this->load->library('form_validation'); $this->load->is_loaded('Form_validation'); // 'form_validation' を返します $this->load->is_loaded('Nonexistent_library'); // FALSE を返します
重要
(別のプロパティに割り当てられた)クラスのインスタンスを複数持っている場合、 最初のものが返されます。
$this->load->library('form_validation', $config, 'fv'); $this->load->library('form_validation'); $this->load->is_loaded('Form_validation'); // 'fv' を返します
- add_package_path($path[, $view_cascade = TRUE])¶
パラメータ: - $path (string) – 追加するパス
- $view_cascade (bool) – カスケードビューを使用するかどうか
返り値: CI_Loader インスタンス(メソッドチェイン)
返り値の型: CI_Loader
パッケージパスの追加により、後続のリソースへのリクエストで ローダクラスが与えられたパスを見るようになります。例として、 上記の「Foo Bar」アプリケーションパッケージは Foo_bar.php という名前のライブラリを持っているとします。コントローラで、次のようにしてください:
$this->load->add_package_path(APPPATH.'third_party/foo_bar/') ->library('foo_bar');
- remove_package_path([$path = ''])¶
パラメータ: - $path (string) – 削除するパス
返り値: CI_Loader インスタンス(メソッドチェイン)
返り値の型: CI_Loader
コントローラでアプリケーションパッケージのリソースの利用が完了し、 さらに他のアプリケーションパッケージを使いたい場合、 もう前のリソースのディレクトリ内を検索したくないので パッケージのパスを削除したくなる場合があることでしょう。 最後に追加されたパスを削除するには、単にパラメータなしでメソッドを呼び出します。
または特定のパッケージパスを削除するには、前にパッケージを add_package_path() に指定したのとまったく同じパスで指定します:
$this->load->remove_package_path(APPPATH.'third_party/foo_bar/');
- get_package_paths([$include_base = TRUE])¶
パラメータ: - $include_base (bool) – BASEPATH を含めるかどうか
返り値: パッケージパスの配列
返り値の型: array
現在使用可能なすべてのパッケージのパスを返します。