ローダ (読み込み処理) クラス

ローダは、名前が示すように、要素をロードするために使用されます。 それら要素は ビューファイルドライバーヘルパーモデル 、または独自のファイルをライブラリ (クラス) とすることができます。

Note

このクラスはシステムによって自動的に初期化されますので、 手動で初期化する必要はありません。

アプリケーションの「パッケージ」

アプリケーションパッケージはリソースの完全なセットを単一のディレクトリにいれて 簡単に配布することができます。それには独自のライブラリ、 モデル、ヘルパー、設定、および言語ファイルを揃えられます。これらのパッケージは 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]])
Parameters:
  • $library (mixed) – ライブラリ名の文字列または複数ライブラリ名の配列
  • $params (array) – ロードされたライブラリのコンストラクタに渡す配列 (オプション)
  • $object_name (string) – ライブラリを割り当てるオブジェクト名 (オプション)
Returns:

CI_Loader インスタンス (メソッドチェイン)

Return type:

CI_Loader

このメソッドはコアクラスをロードするために使用されます。

Note

私たちは「クラス」と「ライブラリ」という用語を互換性があるものとして使用します。

たとえば 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]])
Parameters:
  • $library (mixed) – ライブラリ名の文字列または複数ライブラリ名の配列
  • $params (array) – ロードされたライブラリのコンストラクタに渡す配列 (オプション)
  • $object_name (string) – ライブラリを割り当てるオブジェクト名 (オプション)
Returns:

CI_Loader インスタンス (メソッドチェイン)

Return type:

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]])
Parameters:
  • $view (string) – ビュー名
  • $vars (array) – 変数の連想配列
  • $return (bool) – ロードされたビューを返すかどうか
Returns:

$return を TRUE に設定した場合は表示内容の文字列、そうでなければ CI_Loader インスタンス (メソッドチェイン)

Return type:

mixed

このメソッドはビューファイルをロードするために使用します。 もしユーザガイドの ビュー セクションを読んでいない場合、 まずそちらをおすすめします。 この方法の一般的な使用方法が記されています。

第 1 引数は必須です。 それはロードしたいビューファイルの名前です。

Note

.php の以外のものを使用しない限り、 .php ファイル拡張子を指定する必要はありません。

省略可能な 第 2 引数は連想配列またはオブジェクトを渡すことができます。 それは実行中に PHP の extract() 関数を使ってビューファイルで使用できる変数に変換されます。 繰り返します、 ビューページ をお読みください。 これがどれだけ使えるかを学べます。

省略可能な 第 3 引数はメソッドの動作を変更することができます、 ブラウザに送信するのではなく、文字列としてデータを返すようにです。 これは、なにかしらデータを処理したい場合に便利です。 このパラメータを TRUE (真偽値) に設定すると、データが返されます。 デフォルトの動作は FALSE で、これはブラウザにデータを送信します。 データを返すようにしたときは変数に代入するのを忘れないでください:

$string = $this->load->view('myfile', '', TRUE);
vars($vars[, $val = ''])
Parameters:
  • $vars (mixed) – 変数の配列または単一の変数名
  • $val (mixed) – 変数値 (オプション)
Returns:

CI_Loader インスタンス(メソッドチェイン)

Return type:

CI_Loader

このメソッドは入力として連想配列を取り、 PHP の extract() 関数を使用して変数を生成します。このメソッドは上記 $this->load->view() メソッドの第 2 引数を使用した場合と同じ結果が得られます。 独立してこのメソッドを使用するべき理由としては、 コントローラのコンストラクタでグローバル変数を設定し、 それらを不特定のメソッドからロードされる任意のビューファイルで利用したい場合です。 このメソッドは複数回呼び出すことができます。 データは蓄えられ、変数展開のために1つの配列にマージされます。

get_var($key)
Parameters:
  • $key (string) – 変数名のキー
Returns:

キーがある場合はその値、ない場合は NULL

Return type:

mixed

このメソッドはビューで利用可能な変数からなる連想配列を確認します。 ライブラリまたは別のコントローラメソッドで $this->load->vars() を用いて変数を設定していることを何らかの理由で確認したい場合に便利です。

get_vars()
Returns:割り当てられたすべてのビュー変数の配列
Return type:array

このメソッドはビューで使用可能なすべての変数を取得します。

clear_vars()
Returns:CI_Loader インスタンス (メソッドチェイン)
Return type:CI_Loader

貯め込まれているビュー変数を消去します。

model($model[, $name = ''[, $db_conn = FALSE]])
Parameters:
  • $model (mixed) – モデル名または複数のモデル名を含む配列
  • $name (string) – モデルを割り当てるオブジェクト名 (オプション)
  • $db_conn (string) – ロードするデータベース設定グループ (オプション)
Returns:

CI_Loader インスタンス (メソッドチェイン)

Return type:

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]]])
Parameters:
  • $params (mixed) – データベースグループ名または設定オプション
  • $return (bool) – ロードされたデータベースオブジェクトを返すかどうか
  • $query_builder (bool) – クエリビルダをロードするかどうか
Returns:

$return が TRUE に設定されている場合は CI_DB インスタンスか失敗時に FALSE 、そうでなければ CI_Loader インスタンス (メソッドチェイン)

Return type:

mixed

このメソッドではデータベースクラスをロードできます。 2 つの引数は 省略可能 です。詳しくは データベース セクションをご覧ください。

dbforge([$db = NULL[, $return = FALSE]])
Parameters:
  • $db (object) – データベースオブジェクト
  • $return (bool) – データベースフォージのインスタンスを返すかどうか
Returns:

$return が TRUE に設定されている場合は CI_DB_forge インスタンスか失敗時に FALSE 、そうでなければ CI_Loader インスタンス (メソッドチェイン)

Return type:

mixed

データベースフォージ クラスをロードします、 より詳しくはそのマニュアルを参照してください。

dbutil([$db = NULL[, $return = FALSE]])
Parameters:
  • $db (object) – データベースオブジェクト
  • $return (bool) – データベースユーティリティのインスタンスを返すかどうか
Returns:

$return が TRUE に設定されている場合は CI_DB_utility インスタンスか失敗時に FALSE 、そうでなければ CI_Loader インスタンス (メソッドチェイン)

Return type:

mixed

データベースユーティリティ クラスをロードします。 詳細はそのマニュアルを参照してください。

helper($helpers)
Parameters:
  • $helpers (mixed) – ヘルパー名文字列、または複数のヘルパー名を含む配列
Returns:

CI_Loader インスタンス (メソッドチェイン)

Return type:

CI_Loader

このメソッドはヘルパーファイルをロードします。 file_name は ファイルの名前で、 _helper.php 拡張子は不要です。

file($path[, $return = FALSE])
Parameters:
  • $path (string) – ファイルパス
  • $return (bool) – ロードされたファイルを返すかどうかを
Returns:

$return が TRUE に設定されている場合は ファイルの内容、そうでなければ CI_Loader インスタンス (メソッドチェイン)

Return type:

mixed

これは汎用的なファイルをロードするメソッドです。 第 1 引数にファイルパスと名前を指定すれば、そのファイルが開かれ、読み込まれます。 デフォルトではデータはちょうどビューファイルのようにお使いのブラウザに送信されますが、 第 2 引数に TRUE を設定している場合はかわりにデータを文字列として 返します。

language($files[, $lang = ''])
Parameters:
  • $files (mixed) – 言語ファイル名または複数の言語ファイル名の配列
  • $lang (string) – 言語名
Returns:

CI_Loader インスタンス (メソッドチェイン)

Return type:

CI_Loader

このメソッドは 言語読み込み メソッド: $this->lang->load() のエイリアスです。

config($file[, $use_sections = FALSE[, $fail_gracefully = FALSE]])
Parameters:
  • $file (string) – 設定ファイル名
  • $use_sections (bool) – 設定値を独自のセクションにロードするかどうか
  • $fail_gracefully (bool) – 失敗した場合に FALSE を返すだけにするかどうか
Returns:

成功した場合に TRUE 、失敗した場合に FALSE

Return type:

bool

このメソッドは 設定読み込み メソッド: $this->config->load() のエイリアスです。

is_loaded($class)
Parameters:
  • $class (string) – クラス名
Returns:

見つかった場合は単一のプロパティ名、そうでない場合は FALSE

Return type:

mixed

クラスがすでにロードされているかどうかを確認できます。

Note

ここでの単語「クラス」は、ライブラリやドライバを指します。

要求されたクラスがロードされている場合、このメソッドはそのクラスが割り当てられた CI スーパーオブジェクト内の名前を返します。そうでない場合は FALSE を返します:

$this->load->library('form_validation');
$this->load->is_loaded('Form_validation');      // 'form_validation' を返します

$this->load->is_loaded('Nonexistent_library');  // FALSE を返します

Important

(別のプロパティに割り当てられた) クラスのインスタンスを複数持っている場合、 最初のものが返されます。

$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])
Parameters:
  • $path (string) – 追加するパス
  • $view_cascade (bool) – カスケードビューを使用するかどうか
Returns:

CI_Loader インスタンス (メソッドチェイン)

Return type:

CI_Loader

パッケージパスの追加により、後続のリソースへのリクエストで ローダクラスが与えられたパスを見るようになります。例として、 上記の「Foo Bar」アプリケーションパッケージは Foo_bar.php という名前のライブラリを持っているとします。コントローラで、次のようにしてください:

$this->load->add_package_path(APPPATH.'third_party/foo_bar/')
        ->library('foo_bar');
remove_package_path([$path = ''])
Parameters:
  • $path (string) – 削除するパス
Returns:

CI_Loader インスタンス (メソッドチェイン)

Return type:

CI_Loader

コントローラでアプリケーションパッケージのリソースの利用が完了し、 さらに他のアプリケーションパッケージを使いたい場合、 もう前のリソースのディレクトリ内を検索したくないので パッケージのパスを削除したくなる場合があることでしょう。 最後に追加されたパスを削除するには、単にパラメータなしでメソッドを呼び出します。

または特定のパッケージパスを削除するには、前にパッケージを add_package_path() に指定したのとまったく同じパスで指定します:

$this->load->remove_package_path(APPPATH.'third_party/foo_bar/');
get_package_paths([$include_base = TRUE])
Parameters:
  • $include_base (bool) – BASEPATH を含めるかどうか
Returns:

パッケージパスの配列

Return type:

array

現在使用可能なすべてのパッケージのパスを返します。