設定類別

設定類別提供一個取得偏好設定的方法。這些偏好可以從預設的設定檔 (application/config/config.php) 或是你自訂的設定檔中取得。

開始作業設定類別

剖析設定類別

在預設裡,CodeIgniter 在 application/config/config.php 中有一個主要設定檔。 若你用文字編輯器打開檔案,將會看到設定的項目存放在一個叫做 $config 的陣列中。

你可以在此檔案中加入你自己的設定項目,或是如果你喜歡將設定項目分開 (假設你還是需要設定項目), 只需建立你自己的檔案並且存放在設定資料夾中。

載入設定檔

載入設定檔有兩個方法:

手動載入

要載入你自訂的設定檔,你會需要使用在 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 陣列索引。舉例來說,要取得你選擇的語言:

$lang = $this->config->item('language');

若你嘗試要取得的項目不存在,這個方法則會回傳 NULL。

若你使用 $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 是它的值。

環境變數

你可以依目前的環境來載入不同的設定檔。 ENVIRONMENT 常數被定義在 index.php,詳細描述請見 Handling Environments 章節。

建立一個特定環境 (environment-specific) 的設定檔, 你需要新增或複製在 application/config/{ENVIRONMENT}/{FILENAME}.php 裡的設定檔。

舉例來說,建立一個只有在產品上線使用的設定檔 (production-only config.php),你需要這麼做:

  1. 建立一個目錄 application/config/production/
  2. 在目錄中複製你現存的 config.php
  3. 編輯 application/config/production/config.php 讓它包含你的產品上線設定值。

當你設定 ENVIRONMENT 常數為 ‘production’,將會載入新的只有在產品上線 (production-only config.php) 可使用的設定值。

你可以將以下檔案放在特定環境 (environment-specific) 目錄中:

  • 預設的 CodeIgniter 設定檔
  • 你自訂的設定檔

類別參考

class CI_Config
$config

所有載入設定值的陣列

$is_loaded

所有載入設定檔的陣列

item($item[, $index=''])
Parameters:
  • $item (string) – 設定項目名稱
  • $index (string) – 索引名稱
Returns:

回傳設定項目值,若沒有則顯示 NULL

Return type:

mixed

取得一個設定項目。

set_item($item, $value)
Parameters:
  • $item (string) – 設定項目名稱
  • $value (string) – 設定項目值
Return type:

void

設置一個設定檔中指定的值

slash_item($item)
Parameters:
  • $item (string) – 設定項目名稱
Returns:

回傳包含 slash 的設定項目,若沒有則顯示 NULL

Return type:

mixed

item() 也是使用相同的方法,不同之處在於在項目的尾端加入一個 slash。

load([$file = ''[, $use_sections = FALSE[, $fail_gracefully = FALSE]]])
Parameters:
  • $file (string) – 設定檔案名稱
  • $use_sections (bool) – 是否讓設定值載入到它的章節 (主要陣列的索引)
  • $fail_gracefully (bool) – 回傳 FALSE 或是顯示錯誤訊息
Returns:

成功則回傳 TRUE,錯誤則為 FALSE

Return type:

bool

載入設定檔案。

site_url()
Returns:Site URL
Return type:string

此方法根據你在設定檔中指定的索引取得 URL。

此方法通常透過 URL Helper 中對應的功能。

base_url()
Returns:網址(URL)的基本位置
Return type:string

此方法透過加入一個選擇性的路徑,來取得你的網站 URL,像是CSS樣式檔或是圖片。 This method retrieves the URL to your site, plus an optional path such as to a stylesheet or image.

此方法通常透過 URL Helper 中對應的功能。

system_url()
Returns:你的 CI system/ directory 網址定位點
Return type:string

此方法可以在你的 CodeIgniter system/directory 取得 URL