如何封装一个自己的mvc框架(四)

来源:互联网 发布:中科大软件在职研究生 编辑:程序博客网 时间:2024/05/07 13:44

之前写好的框架看起来太low了,这一节我们增加我们框架的健壮性

我们需要做的是加载配置类,这样我们的框架看起来就比较的完善了

首先创建配置信息文件目录

例如路由信息route.php

<?php
return array(
    'CONTROL'=>'index',
    'ACTION'=>'index'
);

还有数据库信息

<?php
return array(
    'DSN'=>'mysql:host=localhost;dbname=test',
    'USERNAME'=>'root',
    'PASSWORD'=>'root'
);



然后在我们的的核心文件目录中创建一个配置类文件,获取配置信息

<?php
namespace core\lib;

class config
{
    //定义数组缓存配置
    static public $conf=array();

    //获取配置某一项信息
    static public function get($name,$file)
    {
        //首先判断文件是否缓存
        if (isset(self::$conf[$file])) {

            //如果文件已缓存
            return self::$conf[$file][$name];

        }else{
            //p(1);
            //判断配置文件是否存在
            $path=ROOT."/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{
            //p(1);
            //判断配置文件是否存在
            $path=ROOT."/core/config/".$file.".php";
            if (is_file($path)) {

                $conf=include $path;

                //缓存配置
                self::$conf[$file]=$conf;
                return $conf;

            }else{
                throw new  \Exception('找不到配置文件'.$file);
            }
        }    
    }
}


封装完配置类之后,我们就可以重新配置之前类库里面的配置信息

use core\lib\config;

route.php中的

$route=config::all('route');

model.php中的

$route=config::all('database');


配置完成后在默认控制其中实例化模型类,获取路由信息

<?php
namespace app\controllers;
class indexController extends \core\mymvc
{
    public function index(){
        p(1234);
        $model=new \core\lib\model();


        $temp1= \core\lib\config::get('CONTROL','route');
        $temp= \core\lib\config::get('ACTION','route');
        p($temp);
        p($temp1);
    }
}


输出结果

1234
index
index

说明没有出现错误运行正常,配置成功!!


欲知后事如何请听下回分解......

0 0
原创粉丝点击