php框架的基础类与入口文件

Original 2018-12-18 22:22:44 223
abstract:入口文件: //加载Composer自动加载器 require __DIR__.'/vendor/autoload.php'; //加载框架基础类 require 'pig/Base.php'; //定义项目根目录 define('ROOT_PATH',__DIR__.'/'); //导入配置文件 $conf
入口文件:
//加载Composer自动加载器
require __DIR__.'/vendor/autoload.php';

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

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

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

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

//启动框架
(new \pig\Base($config,$queryStr))->run();


基础类:
namespace pig;


class Base
{
    //框架配置
    protected $config = [];

    //路由信息
    protected $queryStr = '';

    //构造方法
    public function __construct($config,$queryStr='')
    {
        $this->config = $config;
        $this->queryStr = $queryStr;
    }

    //设置调试模式
    public function setDebug()
    {
        //debug == true
        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)
    {
        // new \app\admin\controller\Stu() ,   app/admin/controller/Stu.php
        // new Stu()
        // $class == \app\admin\controller\Stu
        // /app/admin/controller/Stu
        $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();
    }
}


Release Notes

Popular Entries