Config 類別
Config 類別提供一個取得偏好設定的方法。這些偏好設定可以從預設的設定檔 (application/config/config.php) 或是你自訂的設定檔中取得。
注意: 這個類別會由系統自動初始化,所以不需要手動執行。
設定檔剖析
Codeigniter 在 application/config/config.php 目錄中有一個預設的主要設定檔。如果你用文字編輯器打開這個檔案,你會看到設定的事項存放在一個叫做 $config 的陣列裡面。
你可以增加自己的設定項目到這個檔案裡。如果你偏好將設定項目分離(假設你即使這樣也需要設定項目),只要新增你自己的設定檔並且存放在 config 目錄中。
注意: 如果你確實用主要設定檔的格式(把你的設定項目存放在 $config 陣列)來新增你個人的設定檔,Codeigniter 也會聰明地管理這些檔案,所以即使你的陣列名稱相同也不會發生衝突(假設你的陣列索引不同)。
載入設定檔
注意: CodeIgniter 會自動載入主要設定檔 (application/config/config.php) ,所以你只需要載入你自己新增的。
有兩種方式可以載入設定檔:
- 手動載入
要載入你自訂的設定檔,你需要使用在 controller 中的函數:
$this->config->load('filename');其中 filename 是設定檔的檔名,不包括 .php 副檔名。
如果你需要載入多個設定檔,一般狀況下你要把它合併到一個主要的設定陣列。不過如果你在不同設定檔中有相同名稱的陣列索引就會發生名稱衝突。要避免衝突,你可以設定第二個參數為 TRUE ,這樣不同設定會存放在以檔名為索引的陣列中。參考範例:
// 用像這樣的原型存放在一個陣列中: $this->config['blog_settings'] = $config
$this->config->load('blog_settings', TRUE);請參見底下的 取得設定項目 這一節來學習如何用這個方式取得設定項目。
第三個參數讓你抑制當設定檔不存在時會產生的錯誤訊息。
$this->config->load('blog_settings', FALSE, TRUE); - 自動載入
如果你發現你需要某個設定檔是全域的,你可以讓系統自動載入它。你可以開啟位於 application/config/autoload.php 的 autoload.php 檔案,將你的設定檔依照檔案中的指示加入。
取得設定項目
使用下來函數來取得設定檔中的項目:
$this->config->item('item name');
其中 item name 是你要取得的 $config 陣列的索引。例如,要取得你選擇的語言 (language) 你可以這樣做:
$lang = $this->config->item('language');
如果你嘗試取得的設定項目不存在,函數會返回 FALSE (boolean) 。
如果你要用 $this->config->load 函數的第二個參數來指派設定項目給特定的索引,你可以指定索引名稱給 $this->config->item() 函數的第二個參數來取得它。參考範例:
// 載入一個叫做 blog_settings.php 的設定檔,並指派一個叫做 "blog_settings" 的索引
$this->config->load('blog_settings', TRUE);
// 從 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'];
設定一個設定項目
如果你要動態設定一個設定項目或是修改一個現存的項目,你可以用:
$this->config->set_item('item_name', 'item_value');
其中 item_name 是你要修改 $config 陣列索引,而 item_value 是它的值。
環境變數 (Environments)
您可以根據目前環境來載入不同的設定檔。ENVIRONMENT 常數值被定義在 index.php,詳細描述可以參考 Handling Environments 章節。
新增一個 environment-specific 設定檔,新增或複製 application/config/{ENVIRONMENT}/{FILENAME}.php
舉例來說,建立 production-only config.php,步驟如下:
- 建立目錄 application/config/production/
- 複製您的 config.php 到到上面目錄
- 編輯 application/config/production/config.php,此檔案包含產品各項設定值
當您設定 ENVIRONMENT 常數值為 'production',就可以載入新的 production-only config.php 設定值。
您可以放置底下檔案到特定 environment-specific 目錄裡:
- 預設 CodeIgniter 設定檔案
- 您自己定義的設定檔
注意: CodeIgniter 會先嘗試載入目前環境的設定檔,如果找不到就會載入全域設定檔案(例如: 檔案在 application/config/ 目錄)。這意思是說您不需要將所有設定檔都放在 environment 目錄,只要將每個環境所需要改變的資料放入即可。
補助函數(Helper Functions)
config 類別有下列補助函數:
$this->config->site_url();
本函數根據你在設定檔中指定的索引取得網站的url。
$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();
本函數取得 system folder 的URL。