构建一个自己的框架是很有必要的:
1、可以让我们巩固一些基础知识点
2、可以增进我们对项目的整个架构理解
3、可以让我们了解框架的各部分实现原理和逻辑
4、可以让我们更好的去学习和使用其他框架
一:首先了解一个简单的mvc框架的运行逻辑
-->发起http请求
-->所有的请求都重定向到入口文件
-->进行路由解析获得我们需要请求的控制器和动作
-->创建对应的实例对象并调用相应动作
-->从数据库模型中取得需要的数据
-->返回请求数据、渲染相应视图。
二:构建框架
1、规划基础的项目目录
moral 根目录
app 存在项目代码
controller 存放控制器
model 存放数据库模型类
views 存放视图文件
core 存放框架核心代码
common 存放公共函数库
config 存放项目配置文件
lib 存放框架核心类
mortal.php 框架核心基类
index.php 入口文件
2、入口文件我们需要干的事情
1、定义基础常量,例如:define('ROOT',dirname(__FILE__));
2、加载公共函数库
3、启动框架
3、mortal.php核心基类需要我们实现的
1、启动框架的方法 run
2、类的自动加载方法 load
(知识点:spl_autoload_register 实例一个不存在的类时触发)
3、向视图传值的方法 assign
(知识点:extract 分割数组为变量)
4、渲染视图的方法 display
4、lib下需要实现的框架核心类
1、路由的解析类 Route (知识点:$_SERVER )
2、日志类(实现不同的存储驱动,如存文件、存数据库等) Log
(文件驱动知识点:file_put_content函数)
3、数据库操作类 Model(可以直接继承\PDO)
4、配置类 Config
5、创建控制器、视图、数据库模型测试基础框架
三:优化扩展框架
1、安装composer优化扩展框架
2、根目录新建composer.json 文件,并编写内容,例如:
{
"name":"augus/motal",
"description":"framework",
"type":"framework",
"keywords":[
"php",
"framework"
],
"require":{
"php": ">=5.4.0",
"catfan/medoo": "*"
},
"autoload": {
"files": ["core/function.php"],#自动加载文件不是类
"psr-4": {
# 按照psr-4自动加载自己的类
"命名空间": "路径"
},
"classmap": {#加载根目录所有的类文件
"./"
}
}
}
。
第一次命令行执行 composer install
之后只需要 composer update
更多的composer知识内容,参考官方文档。
3、在项目中引入composer加入的扩展。
四:基础扩展推荐
数据库:catfan/medoo
模版引擎: twig/twig
错误诊断组件: filp/whoops