配置类
基本的MVC我们已经搭建完成,接下来我们要提高我们这个框架的健壮性,我们现在的路由都是写在当前文件中;
现在我们写一个配置类,通过配置类来加载我们的配置,当我们修改配置的时候就不用单独去找这些配置文件了
首先,我们在lib目录下创建一个conf.php,然后给它一个命名空间core\lib
类的名称和文件名称保持一致
再在lib下建一个文件夹config,再在config中建立一个route.php内容如下:
<?php
return array(
'CONTROLLER'=>'index',
'ACTION'=>'index',
);
接下来我们要在conf.php中理一下我们的思路
1、判断我们的配置文件是否存在
2、判断配置是否存在
3、缓存配置
<?php
namespace core\lib;
class conf
{
static public $conf = array(); //新建一个静态属性来存放我们的配置
static public function get($name,$file){
/**
* 1、判断配置文件是否存在
* 2、判断配置类是否存在
* 3、缓存配置
*@XIA
*@return:
*/
if (isset(self::$conf[$file])) { //判断配置文件是否存在
return self::$conf[$file][$name]; //用$file作为区分缓存配置
}else{
$path = XIA.'/core/config/'.$file.'.php';
if (is_file($path)) {
$conf = include $path;
if (isset($conf[$name])) {
self::$conf[$file] = $conf;
return $conf[$name]; //返回要加载的配置
}else{
throw new \Exception("没有这个配置项".$name);
}
}else{
throw new \Exception("找不到配置文件".$file); //文件不存在则抛出异常
}
}
}
}
这样我们的加载配置类基本完成了
现在我们把我们的数据库类再完善一下
在config文件夹下新建一个database.php,代码如下
<?php
return array(
'DSN' => 'mysql:host=localhost;dbname=test',
'USERNAME' => 'root',
'PASSWD' => 'root',
);
再扩充一下conf.php的方法
static public function all($file){
if (isset(self::$conf[$file])) {
return self::$conf[$file];
}else{
$path = XIA.'/core/config/'.$file.'.php';
if (is_file($path)) {
$conf = include $path;
if (isset($conf[$name])) {
self::$conf[$file] = $conf;
return $conf;
}else{
throw new \Exception("没有这个配置项".$file);
}
}
}
}
我们的配置类就封装成了