配置文件

引入配置文件,先我们MyPDO类中 有数据库的连接信息,还有在框架类中的一些平台参数等

配置文件创建并分组

<?php 

//配置文件
return array(
    /**
     * 配置文件分组
     */
    'db' =>array( // 数据库信息组
        'host' =>'localhost',
        'port'=>'3306',
        'dbname' =>'my_db',
        'user' =>'root',
        'pwd' =>'root',
        'charset' =>'utf8',
    ),
    'App' => array( //应用程序组
        'default_platform' =>'test'    //默认平台
    ),
    'Home' =>array(  //前台平台组

    ),
    'Test' =>array( //测试平台组
        'default_controller' =>'Mybank',
        'default_action' =>'show'
    )
);

在框架类中实现配置文件,并且复制给超全局变量

1.

    //初始化配置文件,并且复制给超全局变量,可以在任何地方访问
    private static function initConf(){
        $GLOBALS['conf']=include CONFIG_DIR.'conf.php';
    }

2.在基本目录常量中定义conf.php的目录

     * 基本目录常量
     */
    private static function initDir(){
        //定义目录
        define('ROOT_DIR',str_replace('\','/',getcwd().'/'));
        //定义app目录
        define("APP_DIR",ROOT_DIR."app/");
        //定义frame目录
        define('FRAME_DIR',ROOT_DIR."frame/");
        //定义Config配置目录
        define('CONFIG_DIR',APP_DIR.'COnfig/');
    }

3.在分发参数中,设置默认的平台,控制器,动作

    /**
     * 获取分发参数 p c a
     */
    private static function  initFenFaParam(){
        //获取平台platfrom p参数
        define('PLATFORM',isset($_GET['p']) ? $_GET['p'] : $GLOBALS['conf']['App']['default_platform']);
        //获取分发参数c
        define('CONTROL',isset($_GET['c']) ? $_GET['c'] : $GLOBALS['conf']['Test']['default_controller']);
        //获取分发参数a
        define('ACTION',isset($_GET['a']) ? $_GET['a'] : $GLOBALS['conf']['Test']['default_action'] );
    }

 4.在Model模型中设置数据库信息

<?php 
class Model
{
    protected $link;
    public function __construct(){
        $this->initInstance();
    }

    public function initInstance(){
        $config=$GLOBALS['conf']['db'];
        $this->link = MyPDO::getInstance($config);
    }
}

5.在构造函数中,在获取分发参数之前执行这个初始化配置函数

    /**
     * 整体的项目运行函数
     */
    public static function run(){
        //1、定义基础常量
        self::initDir();
        //初始化配置
        self::initConf();
        //2、确定分发参数
        self::initFenFaParam();
        //3、定义当前平台相关的目录常量
        self::initCurrentConst();
        //4、自动加载类
        spl_autoload_register('self::autoLoad');
        // self::initAutoLoad();   也可以使用这个,在类里面在定义一个函数initAutoLoad( spl_autoload_register( 自动函数方法));
        //5、请求分发
        self::initFenFa();
    }
原文地址:https://www.cnblogs.com/xiaowie/p/14337968.html