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);
	            }
	        }
        }   



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章