# 框架配置
框架的配置文件有两个地方,一个是在根目录下的/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’。
}
}
~~~