配置類
該配置類提供一種方法來(lái)進(jìn)行偏好設(shè)置。該偏好來(lái)源于默認(rèn)的配置文件(application/config/config.php) 或您自己定制的配置文件。
注意:該類已經(jīng)自動(dòng)加載而無(wú)需手動(dòng)啟用。
分析配置文件
默認(rèn)情況下,CodeIgniter已經(jīng)有一個(gè)主要的配置文件,位于application/config/config.php。如果你用文本編輯器打開(kāi)你會(huì)看到配置項(xiàng)目被存儲(chǔ)在一個(gè)叫$config的數(shù)組里。
您可以添加您自己的配置項(xiàng)目到這個(gè)文件里,或者您更愿意讓您自己的配置項(xiàng)目與原配置項(xiàng)目分開(kāi)(assuming you even need config items),簡(jiǎn)單的創(chuàng)建一個(gè)文件并保存到config這個(gè)文件夾里就行了。
提示: 如果你想建立一個(gè)和主要配置文件一樣格式的配置文件,把你的配置項(xiàng)目建立在一個(gè)名為$config的數(shù)組中,即使配置文件中有相同的數(shù)組名,CodeIgniter也能智能的管理這些文件而不會(huì)發(fā)生沖突.
加載配置文件
Note: CodeIgniter 會(huì)自動(dòng)加載主要的配置文件(application/config/config.php), 所以你只需要加載你自己創(chuàng)建的配置文件
有兩種方法來(lái)加載配置文件:
-
手動(dòng)加載
為了加載一個(gè)你自定義的配置文件,你需要在 controller 中這樣做:
$this->config->load('filename');
這里的 filename 是你自定義的配置文件的文件名,這個(gè)文件名沒(méi)有 .php 的擴(kuò)展名.
如果你需要加載多個(gè)自定義配置文件,一般情況下它們會(huì)被合并成一個(gè)數(shù)組。然而,如果在不同的配置文件中存在同名的索引,那么會(huì)發(fā)生沖突。為了避免這個(gè)問(wèn)題,你可以把第二個(gè)參數(shù)設(shè)置為 TRUE ,這可以使每個(gè)配置文件的內(nèi)容存儲(chǔ)在一個(gè)單獨(dú)的數(shù)組中,數(shù)組的索引就是配置文件的文件名。請(qǐng)看下面的例子:
// 用這樣的方式保存為一個(gè)數(shù)組: $this->config['blog_settings'] = $config
$this->config->load('blog_settings', TRUE);請(qǐng)閱讀下面名為 獲取配置元素 的部分以了解在這樣的方式下如何取得配置信息
第三個(gè)參數(shù)允許屏蔽當(dāng)配置文件不存在時(shí)產(chǎn)生的錯(cuò)誤信息:
$this->config->load('blog_settings', FALSE, TRUE);
-
自動(dòng)加載
如果你需要一個(gè)特定配置文件在全局范圍內(nèi)都能使用,你可以使系統(tǒng)自動(dòng)加載它。要自動(dòng)加載配置,請(qǐng)打開(kāi)文件 autoload.php,它在 application/config/autoload.php,然后按照文件中的提示增加你想要自動(dòng)加載的配置文件。
獲取配置元素
從配置文件中檢索元素,使用下面的函數(shù):
$this->config->item('item name');
其中 item name 是 $config 數(shù)組中你期望檢索的索引. 例如,要獲得您選擇的語(yǔ)言,你可以這樣做:
$lang = $this->config->item('language');
當(dāng)試圖獲取的元素不存在時(shí),此函數(shù)返回 FALSE (boolean) 。
如果你為了用具體的索引來(lái)聲明配置數(shù)組(避免上述索引重名問(wèn)題)而在函數(shù) $this->config->load 中使用了第二個(gè)參數(shù),你可以通過(guò)指定函數(shù) $this->config->item() 的第二個(gè)參數(shù)為特定索引名來(lái)獲取相關(guān)的配置元素。例如:
// 載入一個(gè)名為 blog_settings.php 的配置文件,然后把它聲明為一個(gè)索引為 "blog_settings" 的數(shù)組
$this->config->load('blog_settings', TRUE);
// 在數(shù)組 blog_settings 中獲取名為 site_name 的配置元素
$site_name = $this->config->item('site_name', 'blog_settings');
// 另外一種方式:
$blog_config = $this->config->item('blog_settings');
$site_name = $blog_config['site_name'];
設(shè)置一項(xiàng)元素
如果你想動(dòng)態(tài)設(shè)置/改變一個(gè)現(xiàn)有的配置元素,你可以使用:
$this->config->set_item('item_name', 'item_value');
其中 item_name 是你希望改變的 $config 數(shù)組的索引, item_value 是改變后的值.
注意:這里修改的配置元素并不是改變配置文件(application/config/config.php)的值,僅改變當(dāng)前$this->config->item()方法取到的值
環(huán)境
你可以根據(jù)當(dāng)前的開(kāi)發(fā)/服務(wù)環(huán)境讀取不同的配置文件. ENVIRONMENT 常量在 index.php 定義, 在 處理多環(huán)境 一章有詳細(xì)的描述和說(shuō)明.
一個(gè)特定環(huán)境的配置文件, 需要按此路徑創(chuàng)建或者復(fù)制一個(gè)文件: application/config/{ENVIRONMENT}/{FILENAME}.php
例如,要?jiǎng)?chuàng)建一個(gè)僅'production'環(huán)境的 config.php, 你應(yīng)該:
- 創(chuàng)建文件夾:application/config/production/
- 復(fù)制現(xiàn)有的 config.php 到上面的文件夾
- 編輯 application/config/production/config.php 設(shè)定你在'production'環(huán)境所需的設(shè)置
當(dāng)你設(shè)置 ENVIRONMENT 常量為 'production', 你剛創(chuàng)建的僅'production'環(huán)境的 config.php 配置文件將被加載。
你可以放置以下配置文件到特定環(huán)境的文件夾:
- 默認(rèn)的 CodeIgniter 配置文件
- 你自己的用戶配置文件
注意: CodeIgniter 會(huì)先嘗試加載當(dāng)前環(huán)境的配置文件。 如果文件不存在,將加載全局配置文件,例如 (application/config/) 。 這意味著你沒(méi)有必要把 所有的配置文件放在特定環(huán)境的文件夾里, ? 僅僅把各環(huán)境不同的放進(jìn)去就行了。
輔助函數(shù)
config 類有以下輔助函數(shù):
$this->config->site_url();
該函數(shù)得到你網(wǎng)站的 URL,其中包含了你在 config 文件中設(shè)置的 "index" 的值。
$this->config->base_url();
This function retrieves the URL to your site, plus an optional path such as to a stylesheet or image.
The two functions above are normally accessed via the corresponding functions in the URL Helper.
$this->config->system_url();
該函數(shù)得到 system folder 的URL .
?