爲了提高框架的健壯性,我們可以封裝一個配置類,通過配置類加載我們的配置,這樣我們修改自己的配置時,就不用單獨去找這些對應的文件。
新建配置類,叫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);
}
}
?>
搞定 我們的日誌類封裝完成!!