作为一个完整框架来说配置类和日志类是不可或缺的,前者可以让我们方便快速的完成我们所需要的配置加载,后者何以记录我们的一些操作流程。好了废话不多说,请大家跟随我的步伐来完成框架中的配置类和日志类的编写。
配置类:
首先我们需要定义一个配置文件的路由,主要目的是定义一个默认情况下的路由,所在位置为./core/config/route.php
<?php
//定义默认情况下的路由
return array(
'CTRL'=>'index',
'ACTION'=>'index'
);
?>
配置文件所在位置为./core/lib/conf.php
<?php
namespace core\lib;
class conf
{
//缓存配置项
static public $conf = array();
//由于经常使用所以定义一个静态的方法
//加载单个类
//$name 加载的配置名称 $file 加载的文件
static public function get($name,$file)
{
/**
* 1.判断配置文件是否存在
* 2.判断配置是否存在
* 3.缓存配置
*/
if(isset(self::$conf[$file]))
{
return self::$conf[$file][$name];
}
else
{
$path=ZL.'\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);
}
}
}
/**
* 加载所有类的函数
*/
static public function all($file)
{
if(isset(self::$conf[$file]))
{
return self::$conf[$file];
}
else
{
$path=ZL.'\core\config\\'.$file.'.php';
if(is_file($path))
{
$conf = include $path;
self::$conf[$file] = $conf;
return $conf;
}
else
{
throw new \Exception('找不到配置文件'.$file);
}
}
}
}
?>
数据库配置类所在位置./core/config/database.php
<?php
return array(
'DSN'=>'mysql:host=localhost;dbname=test',
'USERNAME'=>'root',
'PASSWD'=>'root'
);
?>
相应的我们需要在模板文件中作出修改
<?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());
}
}
}
?>
日志类:
日志类与其他类的加载有所不同,日志类的加载需要有日志类的加载驱动,简单来说我们的日志分为两个部分,即日志驱动文件和日志加载文件。目录结构如下:
本文以将日志写入文件为例。
驱动文件所在位置为:./core/drive/log/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='log')
{
/**
* 1.确定文件存储位置是否存在
* 不存在新建目录
* 2.写日志
*/
if(!is_dir($this->path.date('YmdH')))
{
mkdir($this->path.date('YmdH'),'0777',true);
}
return file_put_contents($this->path.date('YmdH').'/'.$file.'.php',date('Y-m-d H:i:s').json_encode($message).PHP_EOL,FILE_APPEND);
}
}
?>
日志文件所在位置为:./core/lib/log.php
<?php
namespace core\lib;
use core\lib\conf;
class log
{
/**
* 1.确定日志的存储方式
*
* 2.写日志
*/
static $class;
//初始化方式
static public function init()
{
//确定存储方式
$drive = conf::get('DRIVE','log');//加载驱动模型
$class = '\core\lib\drive\log\\'.$drive;//加载类
self::$class = new $class;
}
static public function log($name,$file = 'log')
{
self::$class->log($name,$file);
}
}
?>
好了到目前为止我们的配置类和日志类已经简单的封装完毕!