CodeIgniter 配置類

2018-07-21 15:39 更新

配置類

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

注解

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

使用配置類

配置文件剖析

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

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

注解

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

加載配置文件

注解

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

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

手工加載

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

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

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

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

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

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

第三個參數(shù)用于抑制錯誤信息,當配置文件不存在時,不會報錯:

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

自動加載

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

獲取配置項

要從你的配置文件中獲取某個配置項,使用如下方法:

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

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

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

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

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

// 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è)置配置項

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

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

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

多環(huán)境

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

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

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

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

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

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

  • 默認的 CodeIgniter 配置文件
  • 你自己的配置文件

注解

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

類參考

classCI_Config

$config

所有已加載的配置項組成的數(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

獲取某個配置項。

set_item($item, $value)

參數(shù):

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

返回類型: void

設(shè)置某個配置項的值。

slash_item($item)

參數(shù):

  • $item (string) -- config item name

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

返回類型: mixed

這個方法和 item() 一樣,只是在獲取的配置項后面添加一個斜線,如果配置項不存在,返回 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" 值。

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

base_url()

返回: Base URL

返回類型: string

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

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

system_url()

返回: URL pointing at your CI system/ directory

返回類型: string

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

注解

該方法已經(jīng)廢棄,因為這是一個不安全的編碼實踐。你的 system/ 目錄不應(yīng)該被公開訪問。

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號