MVC配置加载类

之前我们的路由所有的配置都是写在当前文件中的接下来我们开始写一个配置类通过配置类去加载配置
在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 = WTY.'\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文件夹用来存放配置文件
先建立一个路由的配置文件
route.php

<?php
return array(
    'CTRL'=>'index',//默认控制器
    'ATION'=>'index'//默认方法名
)

接下来修改路由类通过配置类来加载默认项

<?php
 namespace core\lib;
 use core\lib\conf; //加入配置类 
 /*
 *路由
  */
 class route
 {
    public $ctrl;
    public $action;
    public function __construct()
    {
        //p($_SERVER);
        if(isset($_SERVER['REQUEST_URI']) && $_SERVER['REQUEST_URI']!='/')
        {
            $path=$_SERVER['REQUEST_URI'];
            $patharr=explode('/',trim($path,'/'));

            if(isset($patharr[0]))
            {
                $this->ctrl=$patharr[0];
                unset($patharr[0]);
            }
            if(isset($patharr[1]))
            {
                $this->action =$patharr[1];
                unset($patharr[1]);
            }
            else
            {
                $this->action =conf::get('ACTION','route');//通过配置项加载方法名
            }
            //p($patharr);
            //url 多余的部分转换成 GET 参数
            $count= count($patharr)+2;
            $i=2;
            while($i<$count)
            {
                if(isset($patharr[$i+1]))
                {
                $_GET[$patharr[$i]]=$patharr[$i+1];                   
                }
                $i+=2;

            }
            unset($_GET['url']);
            //p($_GET);
        }
        else
        {
            $this->ctrl   = conf::get('CTRL','route'); //通过配置项加载控制器名
            $this->action = conf::get('ACTION','route');
        }
    }   
 }

同样我们在config下创建database.php数据库配置文件

    static public function all($file)
    {
        if(isset(self::$conf[$file]))
        {
            return self::$conf[$file];
        }
        else
        {

            $path = WTY.'\core\config\\'.$file.'.php';
            if(is_file($path))
            {
                $conf = include $path;
                self::$conf[$file] = $conf;
                return $conf;
            }
            else
            {
                throw new \Exception('没有配置文件'.$file);
            }

        }

    }

接下来修改model类

<?php
namespace core\lib;
use core\lib\conf;
class model extends \medoo
{
    public function __construct()
    {
        $data=conf::all('database');

    try{
    parent::__construct($data['DSN'],$data['USERNAME'],$data['PASSWD'])eatch(\PDOException $e)
        {
        p($e->getMessage());
        }
    }

    }
}

去控制器中测试

$model = new \app\model\mvcModel();
p($model);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值