Config クラス

Config クラスは、Fuel の設定オプションの殆どすべてを処理することが出来ます。設定ファイルの読み込み、値の取得、設定を行う場合、本クラスが常用されます。

設定ファイルの種類

設定を保存するのに、さまざまなファイルレイアウトを使用できます。レイアウトの種類は、ファイル拡張子で決められます。

ファイルの種類を指定しなかった場合は、Config::load() はデフォルトの 'php' を使用します。

より複雑な設定値を持っている場合は、それらをクロージャとして定義することを選ぶことができます。 デフォルトでは、設定キーを get() した時にクロージャを返し、 実行時に評価され、関数として、または Fuel::value() にくるむ、いずれかの方法で、それを呼び出しクロージャの結果を取得します。 この振る舞いを必要とせず、しかし (例えば、クロージャが常に同じ結果を返すため) 結果をキャッシュし再利用する場合、 クロージャを定義し設定ファイル内でクロージャを Fuel::value() にくるむ必要があります。

set() メソッドにクロージャを渡したい場合も同様です。 もしクロージャの結果ではなく、クロージャ自体を格納する場合には、 set() メソッドに渡すときにクロージャを Fuel::value() にくるむ必要があります。

"PHP" タイプの設定ファイル内でのみクロージャが定義できることに注意してください。

Config グループ

config グループは、設定オプションの範囲を決めるための簡単な方法です。名前の衝突を、グループによって回避します。全ての設定ファイル (db.php や routes.php 、その他) は、メインの config.php を除いて、その設定ファイル名と同名称のグループとして読み込まれます。

メソッド

get($item, $default = null)

get メソッドは、取得したい設定項目を返します。項目が存在しない場合は $default に記した値を返します。取得した項目がグループであれば、グループ全体を返します。

静的 はい
パラメータ
パラメータ デフォルト 説明
$item 必須 取得したい項目名。ドット (.) で階層を区切ることによって、グループと多次元配列にアクセスすることが出来ます。
$default null (オプション) $item が見つからない時は、$default が返ります。
返り値 $item か、もし $item が存在しない時は $default$item がグループの時は、グループ全体を含む配列。
// config.php に設定されている現在の言語を出力します。
echo Config::get('language');

// 存在しない項目のデフォルトとして null を返す
if (Config::get('items_to_display') === null)
{
	throw new Exception('You must set the number of items to display in config.php');
}

// 存在しない項目の場合のデフォルトを下記のように設定出来ます。
$items_to_display = Config::get('items_to_display', 10);

// config/db.php の内容をもつ db グループ全体を読み込みます。
$db_configs = Config::get('db');

// どの db 接続が db config の 'active' にセットされているのかを取得します。
$active_db = Config::get('db.active');

// 下記のように、階層を奥深く探索することが出来ます。
// この例では db group の 'dev' のホスト名を取得出来ます。
$dev_host = Config::get('db.dev.connection.hostname');

set($item, $value)

set メソッドは指定した $item$value をセットします。 $item は、get() メソッドと同様にドット (.) で区切ることが出来ます。

静的 はい
パラメータ
パラメータ デフォルト 説明
$item 必須 セットしたい項目名。ドット (.) で階層を区切ることによって、グループと多次元配列にアクセスすることが出来ます。もし $item が存在しない時は、それを生成します。
$value 必須 $item にセットする値。
返り値 本メソッドは常に true を返します。
// 現在の言語をセットします。
Config::set('language', 'en');

// アクティブな db 接続名をセットします。
Config::set('db.active', 'test');

// 今後利用したい独自の値をセットします。
Config::set('items_to_display', 5);

// ドットを使えばカスタムグループと項目が作れます。
Config::set('blog.items_to_display', 5);

delete($item)

delete メソッドは指定した $item を削除します。 $item は、set() メソッドや get() メソッドと同様、ドットで区切ることが出来ます。

静的 はい
パラメータ
パラメータ デフォルト 説明
$item 必須 削除したい項目名。
返り値 void
// ドット区切りで設定項目を削除します。
Config::delete('blog.items_to_display');

load($file, $group = null, $reload = false, $overwrite = false)

load メソッドは設定ファイルをシステムに読み込みます。要求されたファイルについて、 config ディレクトリを検索します。オプションとして、名前の衝突を回避するために設定ファイルをグループ化できます。

静的 はい
パラメータ
パラメータ デフォルト 説明
$file 必須 設定ファイルのパスは、 config ディレクトリに対する相対パスです。ファイル拡張子を含まないでください (拡張子として ".php" であることが決め打ちされています) 。読み込まれたモジュールの設定ファイルを強制的に読み込むために、モジュール名のプレフィックスを付けることが出来ます。
$group null (オプション) 利用するグループ名。 true の場合、グループ名は $file で作られる名前と同じになります。 null の場合、読み込まれる設定はルートの設定とマージされます。
$reload false (オプション) true の場合、リクエストされた設定のリロードが強制され、読み込まれる設定ファイルについてキャッシュされた設定項目は消されます。
$overwrite false (オプション) true の場合、読み込まれる設定項目と既に読み込まれている項目とのマージが、非再帰的になります。つまり、項目が多次元配列の場合に、その中の配列値はマージではなく上書きされます。
返り値 配列 には、読み込まれた設定が入っています。もし設定ファイルが既に読み込まれている場合は、 false が返ります。
// ルートの設定と "custom" 設定ファイルがマージされる。
Config::load('custom');

// "custom" 設定ファイルをグループ名 "custom" で読み込む。
Config::load('custom', true);

// "custom.ini" 設定ファイルをグループ名 "custom" で読み込む。
Config::load('custom.ini', true);

// "custom" 設定ファイルをグループ名 "foo" で読み込む。
Config::load('custom', 'foo');

// モジュール名 "foo" の "custom" 設定ファイルをグループ名 "bar" で読み込む。
Config::load('foo::custom', 'bar');

save($file, $config)

save メソッドは、システム内に設定ファイルを保存します。ファイルが存在しない時は、設定ファイルが APPPATH の config ディレクトリに作成されます。

静的 はい
パラメータ
パラメータ デフォルト 説明
$file 必須 設定ファイルのパスは、config ディレクトリに対する相対パスです。ファイル拡張子を含まないでください (拡張子として ".php" であることが決め打ちされています)。読み込まれたパッケージやモジュールの設定ファイルを読み込むために、名前空間のプレフィックスを付けることが出来ます。
$config 必須 文字列であれば、保存されるべきグループ名となります。配列であれば、保存されるべき設定を含むと見なされます。
返り値 true なら保存されています。 false ならエラーが起こっています。
// グループ名 "foo" として "custom" 設定ファイルを読み込む。
Config::load('custom', 'foo');

// 幾つかの設定項目を更新
Config::set('foo.key', $value);

// 更新された設定グループ 'foo' を保存 (注意: これはそのグループのすべてを保存することに注意!)
Config::save('custom', 'foo');

// 更新された設定グループ 'bar' をモジュール 'foo' の設定ファイル 'custom' に保存
Config::save('foo::custom', 'bar');

// 更新された設定グループ 'bar' を識別子 'custom' を使い memcached に保存
Config::save('custom.memcached', 'bar');