配置類
基本的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);
}
}
}
}
我們的配置類就封裝成了