# 配置類
配置類用于獲取配置參數,這些參數可以來自于默認的配置文件(application/config/config.php), 也可以來自你自定義的配置文件。
注解
該類由系統自動初始化,你無需手工加載。
[TOC=2,3]
## 使用配置類
### 配置文件剖析
CodeIgniter 默認有一個主要的配置文件,位于 application/config/config.php 。 如果你使用文本編輯器打開它的話,你會看到配置項都存儲在一個叫做 $config 的數組中。
你可以往這個文件中添加你自己的配置項,或者你喜歡將你的配置項和系統的分開的話, 你也可以創建你自己的配置文件并保存到配置目錄下。
> 注解
> 如果你要創建你自己的配置文件,使用和主配置文件相同的格式,將配置項保存到名為 $config 的數組中。 CodeIgniter 會智能的管理這些文件,所以就算數組名都一樣也不會沖突(假設數組的索引沒有相同的)。
### 加載配置文件
> 注解
> CodeIgniter 會自動加載主配置文件(application/config/config.php),所以你只需要加載你自己 創建的配置文件就可以了。
有兩種加載配置文件的方式:
#### 手工加載
要加載你自定義的配置文件,你需要在?[控制器](http://codeigniter.org.cn/user_guide/general/controllers.html)?中使用下面的方法:
~~~
$this->config->load('filename');
~~~
其中,filename 是你的配置文件的名稱,無需 .php 擴展名。
如果你需要加載多個配置文件,它們會被合并成一個大的 config 數組里。盡管你是在不同的配置文件中定義的, 但是,如果有兩個數組索引名稱一樣的話還是會發生名稱沖突。為了避免沖突,你可以將第二個參數設置為 TRUE , 這樣每個配置文件中的配置會被存儲到以該配置文件名為索引的數組中去。例如:
~~~
// Stored in an array with this prototype: $this->config['blog_settings'] = $config
$this->config->load('blog_settings', TRUE);
~~~
請閱讀下面的 “獲取配置項” 一節,學習如何獲取通過這種方式加載的配置。
第三個參數用于抑制錯誤信息,當配置文件不存在時,不會報錯:
~~~
$this->config->load('blog_settings', FALSE, TRUE);
~~~
#### 自動加載
如果你發現有一個配置文件你需要在全局范圍內使用,你可以讓系統自動加載它。 要實現這點,打開位于 application/config/ 目錄下的?**autoload.php**文件, 將你的配置文件添加到自動加載數組中。
### 獲取配置項
要從你的配置文件中獲取某個配置項,使用如下方法:
~~~
$this->config->item('item_name');
~~~
其中 item_name 是你希望獲取的 $config 數組的索引名,例如,要獲取語言選項, 你可以這樣:
~~~
$lang = $this->config->item('language');
~~~
如果你要獲取的配置項不存在,方法返回 NULL 。
如果你在使用 $this->config->load 方法時使用了第二個參數,每個配置文件中的配置 被存儲到以該配置文件名為索引的數組中,要獲取該配置項,你可以將 $this->config->item() 方法的第二個參數設置為這個索引名(也就是配置文件名)。例如:
~~~
// 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'];
~~~
### 設置配置項
如果你想動態的設置一個配置項,或修改某個已存在的配置項,你可以這樣:
~~~
$this->config->set_item('item_name', 'item_value');
~~~
其中,item_name 是你希望修改的 $config 數組的索引名,item_value 為要設置的值。
### 多環境
你可以根據當前的環境來加載不同的配置文件,index.php 文件中定義了 ENVIRONMENT 常量,在?[處理多環境](http://codeigniter.org.cn/user_guide/general/environments.html)?中有更詳細的介紹。
要創建特定環境的配置文件,新建或復制一個配置文件到 application/config/{ENVIRONMENT}/{FILENAME}.php 。
例如,要新建一個生產環境的配置文件,你可以:
1. 新建目錄 application/config/production/
2. 將已有的 config.php 文件拷貝到該目錄
3. 編輯 application/config/production/config.php 文件,使用生產環境下配置
當你將 ENVIRONMENT 常量設置為 'production' 時,你新建的生產環境下的 config.php 里的配置將會加載。
你可以放置以下配置文件到特定環境的目錄下:
* 默認的 CodeIgniter 配置文件
* 你自己的配置文件
> 注解
> CodeIgniter 總是先加載全局配置文件(例如,application/config/ 目錄下的配置文件), 然后再去嘗試加載當前環境的配置文件。這意味著你沒必要將所有的配置文件都放到特定環境的配置目錄下, 只需要放那些在每個環境下不一樣的配置文件就可以了。另外,你也不用拷貝所有的配置文件內容到 特定環境的配置文件中,只需要將那些在每個環境下不一樣的配置項拷進去就行了。定義在環境目錄下的配置項, 會覆蓋掉全局的配置。
## 類參考
classCI_Config
$config
所有已加載的配置項組成的數組。
$is_loaded
所有已加載的配置文件組成的數組。
>[info] ### item($item[,?$index=''])
參數:
* **$item**?(string) -- Config item name
* **$index**?(string) -- Index name
返回: Config item value or NULL if not found
返回類型: mixed
獲取某個配置項。
>[info] ### set_item($item,?$value)
參數:
* **$item**?(string) -- Config item name
* **$value**?(string) -- Config item value
返回類型: void
設置某個配置項的值。
>[info] ### slash_item($item)
參數:
* **$item**?(string) -- config item name
返回: Config item value with a trailing forward slash or NULL if not found
返回類型: mixed
這個方法和?item()?一樣,只是在獲取的配置項后面添加一個斜線,如果配置項不存在,返回 NULL 。
>[info] ### load([$file = ''[,?$use_sections = FALSE[,?$fail_gracefully = FALSE]]])
參數:
* **$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
加載配置文件。
>[info] ### site_url()
返回: Site URL
返回類型: string
該方法返回你的網站的 URL ,包括你在配置文件中設置的 "index" 值。
這個方法通常通過?[URL 輔助函數](http://codeigniter.org.cn/user_guide/helpers/url_helper.html)?中函數來訪問。
>[info] ### base_url()
返回: Base URL
返回類型: string
該方法返回你的網站的根 URL ,你可以在后面加上樣式和圖片的路徑來訪問它們。
這個方法通常通過?[URL 輔助函數](http://codeigniter.org.cn/user_guide/helpers/url_helper.html)?中函數來訪問。
>[info] ### system_url()
返回: URL pointing at your CI system/ directory
返回類型: string
該方法返回 CodeIgniter 的 system 目錄的 URL 。
> 注解
> 該方法已經廢棄,因為這是一個不安全的編碼實踐。你的?system/?目錄不應該被公開訪問。
- 歡迎使用 CodeIgniter
- 安裝說明
- 下載 CodeIgniter
- 安裝說明
- 從老版本升級
- 疑難解答
- CodeIgniter 概覽
- CodeIgniter 將從這里開始
- CodeIgniter 是什么?
- 支持特性
- 應用程序流程圖
- 模型-視圖-控制器
- 設計與架構目標
- 教程 - 內容提要
- 加載靜態內容
- 讀取新聞條目
- 創建新聞條目
- 結束語
- 常規主題
- CodeIgniter URL
- 控制器
- 保留名稱
- 視圖
- 模型
- 輔助函數
- 使用 CodeIgniter 類庫
- 創建類庫
- 使用 CodeIgniter 驅動器
- 創建驅動器
- 創建核心系統類
- 創建附屬類
- 鉤子 - 擴展框架核心
- 自動加載資源
- 公共函數
- 兼容性函數
- URI 路由
- 錯誤處理
- 網頁緩存
- 程序分析
- 以 CLI 方式運行
- 管理你的應用程序
- 處理多環境
- 在視圖文件中使用 PHP 替代語法
- 安全
- PHP 開發規范
- 類庫參考
- 基準測試類
- 緩存驅動器
- 日歷類
- 購物車類
- 配置類
- Email 類
- 加密類
- 加密類(新版)
- 文件上傳類
- 表單驗證類
- FTP 類
- 圖像處理類
- 輸入類
- Javascript 類
- 語言類
- 加載器類
- 遷移類
- 輸出類
- 分頁類
- 模板解析類
- 安全類
- Session 類
- HTML 表格類
- 引用通告類
- 排版類
- 單元測試類
- URI 類
- 用戶代理類
- XML-RPC 與 XML-RPC 服務器類
- Zip 編碼類
- 數據庫參考
- 數據庫快速入門: 示例代碼
- 數據庫配置
- 連接你的數據庫
- 查詢
- 生成查詢結果
- 查詢輔助函數
- 查詢構造器類
- 事務
- 數據庫元數據
- 自定義函數調用
- 數據庫緩存類
- 數據庫工廠類
- 數據庫工具類
- 數據庫驅動器參考
- 輔助函數參考
- 數組輔助函數
- 驗證碼輔助函數
- Cookie 輔助函數
- 日期輔助函數
- 目錄輔助函數
- 下載輔助函數
- 郵件輔助函數
- 文件輔助函數
- 表單輔助函數
- HTML 輔助函數
- 語言輔助函數
- Inflector 輔助函數
- 數字輔助函數
- 路徑輔助函數
- 安全輔助函數
- 表情輔助函數
- 字符串輔助函數
- 文本輔助函數
- 排版輔助函數
- URL 輔助函數
- XML 輔助函數
- 向 CodeIgniter 貢獻你的力量