Config 类別
Config 类別处理 Fuel 裡幾乎所有的配置選項。無論何時你需要載入一个配置档案、取得一个值或設定一个值,你都使用此类別。
Config 档案类型
你可以使用不同的档案佈局來儲存你的配置,佈局类型是由副档名決定:
-
PHP。預設类型,一个 PHP 档案應該回傳一个陣列結構。
return array('key' => 'value');
-
INI。ini 档案的佈局定義,請參閱 此頁。
[group]
key=value
-
YAML。yaml 档案的佈局定義,請參閱 此頁。
group:
key: value
-
JSON。json 档案的佈局定義,請參閱 此頁。
{
"group" :
{
"key": "value"
}
}
-
DB。使用以下資料表結構:
CREATE TABLE IF NOT EXISTS `config` (
`identifier` char(100) NOT NULL,
`config` longtext NOT NULL,
`hash` char(13) NOT NULL,
PRIMARY KEY (`identifier`)
)
預設情況下,它会使用名为 'config' 的資料表。你可以透過在 app/config/config.php
中定義資料表名稱來覆寫,
使用 config.table_name 鍵。
如果你沒有指定档案类型,Config::load() 将預設为 'php' 类型。
Config 群組
配置群組是一个劃分配置選項範圍的简单方式。这可避免命名衝突。所有配置档案(db.php、routes.php、等等)被載入到相同名稱的群組,除了主要的 config.php 档案。
get($item, $default = null)
get 方法回傳想要的配置項目。如果該項目不存在会回傳 $default。如果你正要取回的項目是一个群組,会回傳整个群組。
靜態 |
是 |
參数 |
參数 |
預設 |
描述 |
$item |
必要 |
要取回項目的名稱。可藉由點(.)分隔層級來存取群組和多維陣列。 |
$default |
null |
(選擇性)如果 $item 沒找到,要回傳的預設值。 |
|
回傳 |
$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);
// 这将載入整个 db 群組,該群組是 config/db.php 的內容
$db_configs = Config::get('db');
// 这将取得在 db 配置中的設定为 的 db 連線
$active_db = Config::get('db.active');
// 你可以像这樣多層深入。
// 这将取回 db 群組中 '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');
// 設定 active 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 |
必要 |
要刪除的項目名稱。 |
|
回傳 |
空 |
範例 |
// 使用點符號移除一个配置項目
Config::delete('blog.items_to_display');
|
load($file, $group = null, $reload = false, $overwrite = false)
load 方法讀取一个配置档案進入系统中。它在配置目录搜尋請求档案。你可以選擇性的将配置档案分組,以避免命名衝突。
靜態 |
是 |
參数 |
參数 |
預設 |
描述 |
$file |
必要 |
相對於配置目录,指向配置档案的路徑。不要包含副档名(假設是 ".php")。你可以用模組名稱前綴它,從已載入的模組來強制載入一个配置档案。 |
$group |
null |
(選擇性)要使用的群組名稱。如果設为 true,那麼一个與 $file 同名的群組会被建立。如果沒有設定或是 null,那麼載入的配置将與根配置合併。 |
$reload |
false |
(選擇性)如果設为 true,強制重新載入請求的配置,抹去與要被載入的配置档案相關的快取配置項目。 |
$overwrite |
false |
(選擇性)如果設为 true,載入的配置項目将以非遞迴方法與已載入的項目合併,且将覆寫多維陣列的陣列值,而非合併。 |
|
回傳 |
包含被載入的配置陣列。如果配置档案已经被載入,那麼将回傳 false |
範例 |
// 合併 "custom" 配置档案和根配置。
Config::load('custom');
// 載入 "custom" 配置档案進入名为 "custom" 的群組。
Config::load('custom', true);
// 載入 "custom" 配置档案進入名为 "foo" 的群組。
Config::load('custom', 'foo');
// 從 foo 模組載入 "custom" 配置档案進入名为 "bar" 的群組。
Config::load('foo::custom', 'bar');
|
save($file, $config)
save 方法儲存一个配置档案進入系统。它在配置目录搜尋請求档案。如果沒有找到存在的档案,配置档案将被建立在 APPPATH 的配置目录。
靜態 |
是 |
參数 |
參数 |
預設 |
描述 |
$file |
必要 |
相對於配置目录,指向配置档案的路徑。不要包含副档名(假設是 ".php")。你可以用命名空間前綴它,從已載入的套件或模組來載入一个配置档案。 |
$config |
必要 |
如果是字串,它指定一个要儲存的群組名稱。如果是一个陣列,它被假設为包含要儲存的配置。 |
|
回傳 |
true 如果配置被儲存,false 如果发生错误 |
範例 |
// 載入 "custom" 配置档案進入名为 "foo" 的群組。
Config::load('custom', 'foo');
// 更新一些配置項目
Config::set('foo.key', $value);
// 儲存更新的配置群組 'foo'(注:将儲存該群組的任何東西 )
Config::save('custom', 'foo');
// 儲存更新的配置群組 'bar' 到 'foo' 模組的 'custom' 配置档案
Config::save('foo::custom', 'bar');
|