调试状态,加载器,启动框架

原创 2018-12-18 11:20:24 282
摘要:<?php /**  *入口文件  */ //加载composer自动加载器 require 'vendor/autoload.php'; //加载框架基础类 require 'pig/Base.php'; //定义项目根目录 define('ROOT_PATH', __DIR__.
<?php
/**
 *入口文件
 */

//加载composer自动加载器
require 'vendor/autoload.php';

//加载框架基础类
require 'pig/Base.php';

//定义项目根目录
define('ROOT_PATH', __DIR__.'/');

//导入配置文件
$config = require 'pig/config.php';

//获取URL中的查询字符串
$queryStr = $_SERVER['REQUEST_URI'];

//启动框架(自动执行默认模块/控制器/操作)
(new \pig\Base($config, $queryStr))->run();
class Base
{
    protected $config = [];

    protected $queryStr = '';

    public function __construct($config, $queryStr='')
    {
        $this->config = $config;
        $this->queryStr = $queryStr;
    }

    //设置调试状态
    public function setDebug()
    {
        if ($this->config['app']['debug']) {
            error_reporting(E_ALL);
            ini_set('display_errors','On');
        } else {
            error_reporting(E_ALL);
            ini_set('display_errors','Off');
            ini_set('log_errors', 'On');
        }
    }

    //注册自动加载器
    public function loader($class)
    {
        $path = ROOT_PATH.str_replace('\\', '/', $class).'.php';
        //如果没有指定的控制器类文件,则默认回到首页
        if (!file_exists($path)) {
            header('Location: /');
        }

        require $path;
    }


    //启动框架
    public function run()
    {
        //调试模式
        $this->setDebug();

        //自动加载
        spl_autoload_register([$this, 'loader']);

        //请求分发
        echo (new Route($this->config['route']))->parse($this->queryStr)->dispatch();
    }
}


发布手记

热门词条