CodeIgniter 配置類

2018-07-21 15:39 更新

配置類

配置類用于獲取配置參數(shù),這些參數(shù)可以來自于默認(rèn)的配置文件(application/config/config.php), 也可以來自你自定義的配置文件。

注解

該類由系統(tǒng)自動(dòng)初始化,你無需手工加載。

使用配置類

配置文件剖析

CodeIgniter 默認(rèn)有一個(gè)主要的配置文件,位于 application/config/config.php 。 如果你使用文本編輯器打開它的話,你會(huì)看到配置項(xiàng)都存儲(chǔ)在一個(gè)叫做 $config 的數(shù)組中。

你可以往這個(gè)文件中添加你自己的配置項(xiàng),或者你喜歡將你的配置項(xiàng)和系統(tǒng)的分開的話, 你也可以創(chuàng)建你自己的配置文件并保存到配置目錄下。

注解

如果你要?jiǎng)?chuàng)建你自己的配置文件,使用和主配置文件相同的格式,將配置項(xiàng)保存到名為 $config 的數(shù)組中。 CodeIgniter 會(huì)智能的管理這些文件,所以就算數(shù)組名都一樣也不會(huì)沖突(假設(shè)數(shù)組的索引沒有相同的)。

加載配置文件

注解

CodeIgniter 會(huì)自動(dòng)加載主配置文件(application/config/config.php),所以你只需要加載你自己 創(chuàng)建的配置文件就可以了。

有兩種加載配置文件的方式:

手工加載

要加載你自定義的配置文件,你需要在 控制器 中使用下面的方法:

$this->config->load('filename');

其中,filename 是你的配置文件的名稱,無需 .php 擴(kuò)展名。

如果你需要加載多個(gè)配置文件,它們會(huì)被合并成一個(gè)大的 config 數(shù)組里。盡管你是在不同的配置文件中定義的, 但是,如果有兩個(gè)數(shù)組索引名稱一樣的話還是會(huì)發(fā)生名稱沖突。為了避免沖突,你可以將第二個(gè)參數(shù)設(shè)置為 TRUE , 這樣每個(gè)配置文件中的配置會(huì)被存儲(chǔ)到以該配置文件名為索引的數(shù)組中去。例如:

// Stored in an array with this prototype: $this->config['blog_settings'] = $config
$this->config->load('blog_settings', TRUE);

請(qǐng)閱讀下面的 “獲取配置項(xiàng)” 一節(jié),學(xué)習(xí)如何獲取通過這種方式加載的配置。

第三個(gè)參數(shù)用于抑制錯(cuò)誤信息,當(dāng)配置文件不存在時(shí),不會(huì)報(bào)錯(cuò):

$this->config->load('blog_settings', FALSE, TRUE);

自動(dòng)加載

如果你發(fā)現(xiàn)有一個(gè)配置文件你需要在全局范圍內(nèi)使用,你可以讓系統(tǒng)自動(dòng)加載它。 要實(shí)現(xiàn)這點(diǎn),打開位于 application/config/ 目錄下的 autoload.php文件, 將你的配置文件添加到自動(dòng)加載數(shù)組中。

獲取配置項(xiàng)

要從你的配置文件中獲取某個(gè)配置項(xiàng),使用如下方法:

$this->config->item('item_name');

其中 item_name 是你希望獲取的 $config 數(shù)組的索引名,例如,要獲取語言選項(xiàng), 你可以這樣:

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

如果你要獲取的配置項(xiàng)不存在,方法返回 NULL 。

如果你在使用 $this->config->load 方法時(shí)使用了第二個(gè)參數(shù),每個(gè)配置文件中的配置 被存儲(chǔ)到以該配置文件名為索引的數(shù)組中,要獲取該配置項(xiàng),你可以將 $this->config->item() 方法的第二個(gè)參數(shù)設(shè)置為這個(gè)索引名(也就是配置文件名)。例如:

// Loads a config file named blog_settings.php and assigns it to an index named "blog_settings"
$this->config->load('blog_settings', TRUE);

// Retrieve a config item named site_name contained within the blog_settings array
$site_name = $this->config->item('site_name', 'blog_settings');

// An alternate way to specify the same item:
$blog_config = $this->config->item('blog_settings');
$site_name = $blog_config['site_name'];

設(shè)置配置項(xiàng)

如果你想動(dòng)態(tài)的設(shè)置一個(gè)配置項(xiàng),或修改某個(gè)已存在的配置項(xiàng),你可以這樣:

$this->config->set_item('item_name', 'item_value');

其中,item_name 是你希望修改的 $config 數(shù)組的索引名,item_value 為要設(shè)置的值。

多環(huán)境

你可以根據(jù)當(dāng)前的環(huán)境來加載不同的配置文件,index.php 文件中定義了 ENVIRONMENT 常量,在 處理多環(huán)境 中有更詳細(xì)的介紹。

要?jiǎng)?chuàng)建特定環(huán)境的配置文件,新建或復(fù)制一個(gè)配置文件到 application/config/{ENVIRONMENT}/{FILENAME}.php 。

例如,要新建一個(gè)生產(chǎn)環(huán)境的配置文件,你可以:

  1. 新建目錄 application/config/production/
  2. 將已有的 config.php 文件拷貝到該目錄
  3. 編輯 application/config/production/config.php 文件,使用生產(chǎn)環(huán)境下配置

當(dāng)你將 ENVIRONMENT 常量設(shè)置為 'production' 時(shí),你新建的生產(chǎn)環(huán)境下的 config.php 里的配置將會(huì)加載。

你可以放置以下配置文件到特定環(huán)境的目錄下:

  • 默認(rèn)的 CodeIgniter 配置文件
  • 你自己的配置文件

注解

CodeIgniter 總是先加載全局配置文件(例如,application/config/ 目錄下的配置文件), 然后再去嘗試加載當(dāng)前環(huán)境的配置文件。這意味著你沒必要將所有的配置文件都放到特定環(huán)境的配置目錄下, 只需要放那些在每個(gè)環(huán)境下不一樣的配置文件就可以了。另外,你也不用拷貝所有的配置文件內(nèi)容到 特定環(huán)境的配置文件中,只需要將那些在每個(gè)環(huán)境下不一樣的配置項(xiàng)拷進(jìn)去就行了。定義在環(huán)境目錄下的配置項(xiàng), 會(huì)覆蓋掉全局的配置。

類參考

classCI_Config

$config

所有已加載的配置項(xiàng)組成的數(shù)組。

$is_loaded

所有已加載的配置文件組成的數(shù)組。

item($item[, $index=''])

參數(shù):

  • $item (string) -- Config item name
  • $index (string) -- Index name

返回: Config item value or NULL if not found

返回類型: mixed

獲取某個(gè)配置項(xiàng)。

set_item($item, $value)

參數(shù):

  • $item (string) -- Config item name
  • $value (string) -- Config item value

返回類型: void

設(shè)置某個(gè)配置項(xiàng)的值。

slash_item($item)

參數(shù):

  • $item (string) -- config item name

返回: Config item value with a trailing forward slash or NULL if not found

返回類型: mixed

這個(gè)方法和 item() 一樣,只是在獲取的配置項(xiàng)后面添加一個(gè)斜線,如果配置項(xiàng)不存在,返回 NULL 。

load([$file = ''[, $use_sections = FALSE[, $fail_gracefully = FALSE]]])

參數(shù):

  • $file (string) -- Configuration file name
  • $use_sections (bool) -- Whether config values shoud be loaded into their own section (index of the main config array)
  • $fail_gracefully (bool) -- Whether to return FALSE or to display an error message

返回: TRUE on success, FALSE on failure

返回類型: bool

加載配置文件。

site_url()

返回: Site URL

返回類型: string

該方法返回你的網(wǎng)站的 URL ,包括你在配置文件中設(shè)置的 "index" 值。

這個(gè)方法通常通過 URL 輔助函數(shù) 中函數(shù)來訪問。

base_url()

返回: Base URL

返回類型: string

該方法返回你的網(wǎng)站的根 URL ,你可以在后面加上樣式和圖片的路徑來訪問它們。

這個(gè)方法通常通過 URL 輔助函數(shù) 中函數(shù)來訪問。

system_url()

返回: URL pointing at your CI system/ directory

返回類型: string

該方法返回 CodeIgniter 的 system 目錄的 URL 。

注解

該方法已經(jīng)廢棄,因?yàn)檫@是一個(gè)不安全的編碼實(shí)踐。你的 system/ 目錄不應(yīng)該被公開訪問。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)