php入口文件类,入口文件和基础类总结

摘要:一.入口文件    入口文件就是将所有要用到的文件和框架并设置要使用的常量等操作,

//加载Composer自动加载器

require 'vendor/autoload.php';

//加载框架基础类

require 'hero/Base.php';

//定义项目根目录

define('ROOT

一.入口文件

入口文件就是将所有要用到的文件和框架并设置要使用的常量等操作,//加载Composer自动加载器

require 'vendor/autoload.php';

//加载框架基础类

require 'hero/Base.php';

//定义项目根目录

define('ROOT_PATH',__DIR__.'/');

//导入配置文件

$config = require 'hero/config.php';

//获取URL中的查询字符串

$queryStr = $_SERVER['QUERY_STRING'];

//启动框架

(new \hero\Base($config,$queryStr))->run();

二.基础类

基础类暂时实现了调试模式开关,自动加载和启动框架,即是启动框架之后调用调试模式开关方法和自动加载方法,以及之前写的路由解析和请求分发,实现了框架运行.

当入口文件调用基础类中run方法启动框架,调用查看调试模式,实现自动加载 Route类,调用Route类中路由解析方法解析路由,然后在进行请求分发,请求分发时new一个路由解析出的类,则继续触发自动加载方法,加载其对应文件进行执行.这么理解是否正确?namespace hero;

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';

//        return $path;

//如果没有找到类文件,就直接返回默认页

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

}

e5ba372ad216e97859ccc90f2bc065ec.png

0b4f2a8264060a0e660f08ba68c4b307.png

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值