mvc(配置加载类)

配置类   先前我们的框架基本都封装好了,有些配置文件写在当前的文件里,为了提高我们框架的健壮性,我们来配置一个配置类,通过这个配置类来加载我们的一些配置。

 

首先我们创建一个conf.php文件和routh.php文件,routh.php文件来定义默认的访问的控制器和路由,conf.php来实现这些配置,具体配置如下:

Routh.php

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


<?php
namespace core\lib;
class conf
{    
	static public $conf = array();
	static public function get($name, $file){       //get方法两个参数,$name所要加载配置的名称,$file所要加载的文件
        /**
         * 1.判断配置文件是否存在
         * 2.判断配置是否存在
         * 3.缓存配置
         */
        if(isset(self::$conf[$file])){           //避免重复加载
            return self::$conf[$file][$name]; 
        }else{
        	p(1);
        	$path = IMOOC.'core/config/'.$file.'.php';
        //p($file);die;
	        if(is_file($path)){             //检查配置的文件是否存在
	            $conf = include $path;
	            if(isset($conf[$name])){
	                self::$conf[$file] = $conf;
	                return $conf[$name];
	            }else{
	            	throw new \Exception('没有这个配置项'.$name);
	            }
	        }
        }

我们可以在路有的配置文件里lib/routh.php里先

use core\lib\conf;

然后再

$this->ctrl = conf::get('CTRL','route');
$this->action = conf::get('ACTION','route');

使用如上的方法来加载到默认访问控制器的get()方法了

到这里我们的默认访问控制器和方法就完成了

接下来就是配置数据库,方法和上面差不多,也是需要一个定义的数据库database.php页面和配置的lib/model.php两个页面来实现的,具体实现如下

Database.php
<?php
return array(
     
		'DSN'=> "mysql:host=localhost;dbname=test",
		'USERNAME'=>'root',
		'PASSWD'=>'root'
	)
?>
Model.php

<?php
namespace core\lib;
use core\lib\conf;
class model extends \PDO
{
	public function __construct(){
		
		$database  = conf::all('database');         //all()方法
		//p($database);
		try{
			parent::__construct($database['DSN'], $database['USERNAME'], $database['PASSWD']);
		}catch(\PDOException $e){
			echo $e->getMessage();
            //p($e->getMessage());
		}
	}
}

        
            
        
	}

//这里的all方法就是上面的all(‘database’),在配置文件lib/conf.php里,需要加载多个配置的时候可以直接调用all()方法。上面加载数据库的时候用到的就是all()方法

static public function all($file){

            if(isset(self::$conf[$file])){
            return self::$conf[$file]; 
            }else{
        	
        	  $path = IMOOC.'core/config/'.$file.'.php';
              //p($file);die;
	          if(is_file($path)){
	            $conf = include $path;  
	                self::$conf[$file] = $conf;
	                return $conf;
	            }else{
	            	throw new \Exception('没有这个配置项'.$name);
	            }
	        }
        }   



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值