# 框架配置
框架的配置文件有兩個地方,一個是在根目錄下的/Lib/config.php這個文件,我們叫它做 **公共配置文件**。還有就是你所建立應用目錄下的/app/Lib/config.php,我們叫它做 **應用內配置文件**。
他們的作用域是不同的,公共配置文件的內容可以在網站目錄下所有應用中讀取到,而應用配置文件的內容只能在本應用中讀取到,不同應用中的配置文件互相隔離。
>[warning] 如您對MVC模式不熟悉,只需簡單閱讀本章節,了解 **控制器** 后再返回來深入閱讀。
<br/><br/>
## 配置文件的格式
在第一訪問框架的inex.php的時候,框架會為你生成一個公共配置文件內容當做示例。
所有配置內容都要寫在$configdata這個數組變量中,配置的名稱與值是以鍵值對方式存儲的,包括公共配置和應用內配置都要將數組賦值給$configdata,系統會將公共和應用的配置文件自動進行合并。
配置的值可以是字符串、數字、數組等形式。
~~~
//公共【配置】文件數據
$configdata = array(
'testConfig1' => '這是第一條測試配置數據', //測試配置數據1
//數據庫相關配置,調用DB()函數必須進行一下配置
//=============================
//SQLITE
//'DB' => array(
// 'database_type' => 'SQLite', //數據庫類型
// 'database_file' => 'magphp_sqlite3.db', //SQLITE數據庫文件路徑
//),
//MYSQL
//'DB' => array(
// 'database_type' => 'mysql',
// 'database_name' => 'name',
// 'server' => 'localhost',
// 'username' => 'your_username',
// 'password' => 'your_password',
//),
'LANG_DEF' => 'CN', //全局默認語言
);
~~~
<br/><br/>
## 讀取配置內容
框架提供了CONF()方法讀取配置中的內容。
~~~
class IndexController extends Controller{
public function index(){
$isconfig = CONF('testConfig1');
echo $isconfig;
//輸出‘這是第一條測試配置數據’這句話。
}
}
~~~
<br/><br/>
## 動態改變設置
在個別情況下,我們需要動態的在程序中改變配置的值。但是通常**不推薦這么改變配置的值**,因為在程序復雜的時候容易造成混亂。
~~~
例如原始值: 'test' => 'yes';
使用方法: $newconfig = CONF('test','not');
輸出結果:echo $newconfig; //輸出‘not’
~~~
<br/><br/>
## 配置合并與覆蓋
框架對公共配置和應用配置進行合并的時候,會遵循一些原則進行合并。
首先如果公共配置和應用配置沒有任何鍵名是相同的,則直接累加合并配置。
但是如果應用配置有與公共配置中鍵名重復的情況,那么框架將把應用配置中同名的鍵值覆蓋掉公共配置中同名的鍵值內容。
例子:
~~~
//公共配置中(/Lib/config.php)有一個'test1'它的值是'yes'
$configdata = array(
'test1' => 'yes',
);
~~~
~~~
//應用配置中(/app/Lib/config.php)也有一個'test1'它的值是'not'
$configdata = array(
'test1' => 'not',
);
~~~
~~~
//在app中調用并輸出'test1'的結果為'not'
//訪問index.php/Index/index/
class IndexController extends Controller{
public function index(){
$isconfig = CONF('test1');
echo $isconfig;
//輸出‘not’。
}
}
~~~