摘要:<?php
// 概述
// 基础类是框架运行的保障,主要用调试设置,类的自动加载和启动功能,几乎所有PHP框架都有一个基础类,
// 可能有的框架叫做引导类,但实质都是一样的
// 1.1 调试模式
// 开发模式,开启,抛出错误;上线后,关闭调试模式
// 1.2 自动加载
// 将自定
<?php
// 概述
// 基础类是框架运行的保障,主要用调试设置,类的自动加载和启动功能,几乎所有PHP框架都有一个基础类,
// 可能有的框架叫做引导类,但实质都是一样的
// 1.1 调试模式
// 开发模式,开启,抛出错误;上线后,关闭调试模式
// 1.2 自动加载
// 将自定义的类加载函数把它注册到系统中去,这样,我们在New一个类的时候,这个类就自动加载到当前脚本中。
// 1.3 启动框架
// 一般是设置一个run或者start方法,所谓启动,实际上就是一个请求路由分发的过程。
namespace ma;
/****
* 框架基础类
* 1.调试模式
* 2.自动加载
* 3.启动框架
****/
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();
$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();
}
}
// 附:配置文件
// 文件位置:app/ma/config.php
return [
// 应用配置
'app' =>[
// 调试开关
'debug' =>'true',
],
// 路由配置
'route' =>[
// 默认模块
'module' =>'admin',
// 默认控制器
'controller' =>'Index',
// 默认操作
'action' =>'Index',
],
// 数据库配置
'db' =>[
// 数据类型
'database_type' =>'mysql',
// 默认的数据库名称
'database_name' =>'frame',
// 默认主机名
'server' =>'127.0.0.1',
// 默认用户名
'username' =>'root',
// 用户密码
'password' =>'root',
// 默认客户端的字符码集
'charset' =>'utf8',
// 默认的服务器端口号
'port' =>'3306',
],
]
?>