配置类 先前我们的框架基本都封装好了,有些配置文件写在当前的文件里,为了提高我们框架的健壮性,我们来配置一个配置类,通过这个配置类来加载我们的一些配置。
首先我们创建一个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);
}
}
}