为了提高框架的健壮性,我们可以封装一个配置类,通过配置类加载我们的配置,这样我们修改自己的配置时,就不用单独去找这些对应的文件。
新建配置类,叫conf.php
<?php
namespace core\lib;
class conf
{
static public $conf=array();
static public function get($name,$file)
{
/**
* 1.判断配置文件是否存在
* 2.判断配置是否存在
* 3.缓存配置
*/
if(isset(self::$conf[$file])){
return self::$conf[$file][$name];
}else{
$path=MPK.'/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);
}
}
}
}
?>
数据库配置类所在的位置 ./core/config/database.php
<?php
return array(
'DSN'=>'mysql:host=127.0.0.1;dbname=test',
'USERNAME'=>'root',
'PASSWD'=>'****'
);
?>
接下来进行 相应的模板修改
<?php
namespace core\lib;
use core\lib\conf;
class model extends \PDO
{
public function __construct()
{
$option = conf::all('database');
try
{
parent::__construct($database['DSN'], $database['USERNAME'], $database['PASSWD']);
}catch(\PDOException $e)
{
p($e->getMessage());
}
}
}
?>
我们的配置类就封装完成了 !
接下来 我们要封装的是所有框架中必不可少的功能,日志类。
日志类和其他的类有一些区别,因为它可能是存在文件中或者数据库中,甚至是存在缓存中的,所以我们需要一种新的设计模式。
新建log类
<?php
namespace core\lib;
use core\lib\conf;
class log
{
static $class;
/**
* 1.确定日志存储方式
*
* 2.写日志
*/
static public function init(){
//确定存储方式
$drive = conf::get('DRIVE','log');
$class = '\core\lib\drive\log\\'.$drive;
self::$class = new $class;
}
static public function log($message,$file){
//core\lib\drive\log\log;
self::$class->log($message,$file);
}
}
?>
在config文件中创建log.php配置文件,里面放上文件的存储方式和存储路径
<?php
return array(
'DRIVE' => 'file',
'OPTION' => array(
'PATH' => MPK.'/log/'
)
);
?>
在lib文件中创建一个log文件,再从log文件中创建一个file.php文件,在file.php文件中实现将日志存入文件
<?php
namespace core\lib\drive\log;
use core\lib\conf;
class file
{
public $path;#日志存储路径
public function __construct(){
$conf = conf::get('OPTION','log');
$this->path = $conf['PATH'];
}
public function log($message,$file){
$path = $this->path;
// echo $this->path.date('Y-m-d');die;
if(!is_dir($this->path.date('Y-m-d'))){
mkdir($this->path.date('Y-m-d'),0777,true);
}
$message = date('Y-m-d H:i:s').$message;
return file_put_contents($this->path.date('Y-m-d').'/'.$file.'.php',json_encode($message).PHP_EOL,FILE_APPEND);
}
}
?>
搞定 我们的日志类封装完成!!