配置類 先前我們的框架基本都封裝好了,有些配置文件寫在當前的文件裏,爲了提高我們框架的健壯性,我們來配置一個配置類,通過這個配置類來加載我們的一些配置。
首先我們創建一個conf.php文件和routh.php文件,routh.php文件來定義默認的訪問的控制器和路由,conf.php來實現這些配置,具體配置如下:
Routh.php
<?php
return array(
'CTRL'=>'index', //默認的控制器
'ACTION'=>'index' //默認的方法名
);
?>
<?php
namespace core\lib;
class conf
{
static public $conf = array();
static public function get($name, $file){ //get方法兩個參數,$name所要加載配置的名稱,$file所要加載的文件
/**
* 1.判斷配置文件是否存在
* 2.判斷配置是否存在
* 3.緩存配置
*/
if(isset(self::$conf[$file])){ //避免重複加載
return self::$conf[$file][$name];
}else{
p(1);
$path = IMOOC.'core/config/'.$file.'.php';
//p($file);die;
if(is_file($path)){ //檢查配置的文件是否存在
$conf = include $path;
if(isset($conf[$name])){
self::$conf[$file] = $conf;
return $conf[$name];
}else{
throw new \Exception('沒有這個配置項'.$name);
}
}
}
我們可以在路有的配置文件裏lib/routh.php裏先
use core\lib\conf;
然後再
$this->ctrl = conf::get('CTRL','route');
$this->action = conf::get('ACTION','route');
使用如上的方法來加載到默認訪問控制器的get()方法了
到這裏我們的默認訪問控制器和方法就完成了
接下來就是配置數據庫,方法和上面差不多,也是需要一個定義的數據庫database.php頁面和配置的lib/model.php兩個頁面來實現的,具體實現如下
Database.php
<?php
return array(
'DSN'=> "mysql:host=localhost;dbname=test",
'USERNAME'=>'root',
'PASSWD'=>'root'
)
?>
Model.php
<?php
namespace core\lib;
use core\lib\conf;
class model extends \PDO
{
public function __construct(){
$database = conf::all('database'); //all()方法
//p($database);
try{
parent::__construct($database['DSN'], $database['USERNAME'], $database['PASSWD']);
}catch(\PDOException $e){
echo $e->getMessage();
//p($e->getMessage());
}
}
}
}
//這裏的all方法就是上面的all(‘database’),在配置文件lib/conf.php裏,需要加載多個配置的時候可以直接調用all()方法。上面加載數據庫的時候用到的就是all()方法
static public function all($file){
if(isset(self::$conf[$file])){
return self::$conf[$file];
}else{
$path = IMOOC.'core/config/'.$file.'.php';
//p($file);die;
if(is_file($path)){
$conf = include $path;
self::$conf[$file] = $conf;
return $conf;
}else{
throw new \Exception('沒有這個配置項'.$name);
}
}
}