MVC框架扩展类

之前我们已经搭建了一个简陋的mvc框架,下面我们来提高一下框架的健壮性,

首先,看一下我们之前写的路由类;一些默认的配置都是些在文件中的,我们可以封装一个配置类来替换这些值,这样我们修改配置的时候就不用单独在文件中修改了;

  $this->action = <span style="color:#FF0000;"></span><span style="color:#FF0000;">'index.html'</span>
    ①新建一个配置目录config;用来储存我们的配置文件;

    ②在config目录下新建route.php文件,用来储存路由默认配置

<?php
return array(
    'CTRL'=>'index',<span style="color:#FF0000;">//控制器默认为index</span>
    'ACTION'=>'index'<span style="color:#FF0000;">//默认动作也是index</span>
);

    ③在lib目录下新建配置处理配置文件conf.php

<?php
namespace   core\lib;

class conf
{
    static public $conf=array();<span style="color:#FF0000;">//新建一个静态数组,用于储存配置</span>
    //static public $cona=array();
    static public function get($name,$file)<span style="color:#FF0000;">//这里有两个参数;</span><span style="color:#FF0000;">name是配置的名称,file是配置的值;</span>
    {<span id="transmark" style="display: none; width: 0px; height: 0px;"></span>
       <span style="color:#FF0000;"> /*  完成思路
         * 1,判断配置文件是否存在
         * 2判断配置是否存在
         * 3缓存配置
         */</span>
        //p(self::$conf[$file]);
        if(isset(self::$conf[$file])){<span style="color:#FF0000;">//为了不重复储存,我们先要判断一下是否存在这个配置的缓存</span>
            //p(self::$conf[$file]);exit;
            return self::$conf[$file];
        }else{
            //p(1);
            $path = IMOOC.'\core\config\\'.$file.'.php';<span style="color:#FF0000;">//第一步:</span>首先获取配置文件路径,
            //p($file);exit(); 
            if(is_file($path)){<span style="color:#FF0000;">//第二步:</span>判断配置文件是否存在
                $conf=include $path;<span style="color:#FF0000;">//第三步:</span>引用配置文件,将文件放入缓存中后返回配置;
                //p($file);p($name);p($conf[$name]);exit();
                if(isset($conf[$name])){
                    self::$conf[$file]=$conf;
                    return $conf[$name];
                }else{
                    throw new \Exception('没有这个配置项'.$name);<span style="color:#FF0000;">//如果没有这个配置项就抛出一个异常;</span>
                }
            }else{
                throw new \Exception('找不到配置文件',$file);<pre name="code" class="php"><span style="color:#FF0000;">//如果没有这个配置文件就抛出问题;</span>
} } }}?>

  ④验证方法是否可用; 

<?php
namespace app\ctrl;
use app\model\cModel;
use app\model\kModel;
use core\lib\model;

class indexCtrl extends \core\imooc
{
    //所有留言
    public function index()
    {
        $temp =  \core\lib\conf::get('CTRL','route');<span style="color:#FF0000;">//调用get方法输出index;就算完成了;</span>
        print_r($temp);
    }
}
这样我们这个配置类就算完成了;哪里需要这个配置直接用get方法提取配置;

因为这个是提取单个配置的;如果遇到数据库配置我们就需要提取有关数据库的所有配置;

步骤和配置单个一样,

①在config目录新建database.php作为数据库配置文件,内容如下;

<?php
return array(
    'database_type' => 'mysql',
    'database_name' => 'kaoshi',
    'server' => 'localhost',
    'username' => 'root',
    'password' => 'root',
    'charset' => 'utf8'
);



?>
②在lib目录下的conf.php文件中搭建方法

static public function all($file)
    {
        /*
         * 1,判断配置文件是否存在
         * 2判断配置是否存在
         * 3缓存配置
         */
        if(isset(self::$conf[$file])){
            return self::$conf[$file];
        }else{
            //p(1);
            $path = IMOOC.'\core\config\\'.$file.'.php';
            //p($path);exit();
            if(is_file($path)){
                $conf=include $path;
                //p($conf);exit();
                if(isset($conf)){
                    self::$conf[$file]=$conf;
                    return $conf;<span style="color:#FF0000;">//直接在这里返回整个文件;这样就可以获得整个配置文件了</span>
                }
            }else{
                throw new \Exception('找不到配置文件',$file);
            }
        }
    }
这样我们的配置类就算完成了:需要调用单个配置用get()方法,get方法有两个参数:第一个为配置名第二个为文件名;调用全部配置用all();all方法只有一个参数,为文件名.


日志类

每个框架运行的时候都需要一个日志类记录文件的活动;日志类和其他类不同的地方就是储存方式需要用数据库或者用本地文件记录还有可能存在与缓存文件中;

所以我们需要先判断一下文件的储存类型;

①在config目录中新建日志文件配置log.php

<?php

//日志类
return array(
    'DRIVE'=>'file',<span style="color:#FF0000;">//日志储存方式</span>
    'OPTION'=>array(<span style="color:#FF0000;">//日志储存位置</span>
        'PATH'=>IMOOC.'/log/',
    ),
);


?>

②在lib目录下新建日志文件log.php;

<?php
namespace  core\lib;
use core\lib\conf;
class log
{
    static $class;
    <span style="color:#FF0000;">/*
     * 1确定日志存储方式
     *
     * 2 写日志
     */</span>
    static public function init()<span style="color:#FF0000;">//第一步:加载类判断文件储存方式</span>
    {
        $drive= conf::get('DRIVE','log');
        $class='\core\lib\drive\log\\'.$drive;<span style="color:#FF0000;">//根据储存方式进入类</span>
        //p($class);
        self::$class = new $class;
    }
    static public function log($name,$file='log')
    {
        self::$class->log($name,$file);
    }
}

?>
③配置file文件

<?php
namespace core\lib\drive\log;
//文件系统
use core\lib\conf;

class file
{
    public $path;#日志存储位置
    public function __construct()
    {
        $this->path = conf::get('OPTION','log');
    }
     public function log($message,$file='log')<span style="color:#FF0000;">//有两个参数第一个为日志内容;第二个为储存文件名</span>
    {
<span style="color:#FF0000;">        </span><pre name="code" class="html"><span style="color:#FF0000;">/*
         * 1确定文件存储位置是否存在
         * 新建目录
         * 2写入日志
         */</span>

//p(is_dir(IMOOC.'/file'));exit; $logpath=IMOOC.'\\'.$this->path; //p($logpath);exit; if(!is_dir($logpath)){ //确定文件存储位置是否存在
mkdir($this->path,'0777',true); //新建文件 } //p($message);exit; return file_put_contents($logpath.'\\'.$file.'.php',date('Y-m-d H:i:s').json_encode($message).PHP_EOL,FILE_APPEND); //利用
file_put_contents储存文件,内容转换为json_encode便于储存.
}}?>

 ④生成文件. 

这样我们的日志类就配置成功了;









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值