[手摸手带你创建php现代化框架] 教程终于写完了
教程地址#
从 0-1
写出来的。
刚写完的文档,有什么问题,欢迎指正。
(最下面有 qq 群)
可能会帮助你更容易理解框架的文档#
- 深入 Laravel 核心: 这个有点难度,可以简单了解下
- PHP 设计模式全集: 官方的设计模式,略难。
- php 设计模式学习: 简单方式实现设计模式,没有那么完善。
- PHP PSR 标准规范: 了解就好了。
源码#
教程源码
:php_frame (giteee)原型源码
: php_frame (github)
原型源码
: 先写好框架,就是 原型源码
, 才开始写此教程。教程源码
: 按此教程步骤走下去,会最终变成教程源码
, 大部分都是复制 原型源码
的。
设计方向#
闭门造轮子#
听到很多,不要创建重复轮子了。
最后终究还是要 学习框架底层
= 学习轮子
, 这也此框架目的之一。
闭门造轮
成为这个框架最大的特色。
所以此教程不是 手摸手带你组装php现代化框架
, 而是 手摸手带你创建php现代化框架
。
不完善全部代码#
指不是框架运行必要的代码,本教程不会写!
读者自行完善,这也可以加深读者的印象。
比如路由,get
post
写好了,
put
post
delete
让读者去完善。
最少代码#
我个人较为讨厌长代码,每个字都需要去解读。
因为 不完善全部代码
, 所以代码量才少。
如果全部都完善了,那为什么不去看 轮子
源码?
因为代码量多呗!
目录结构#
+---app
| | helpers.php // 函数
| +---controller
| | UserController.php // 示例控制器
| +---exceptions
| | ErrorMessageException.php // 错误消息返回
| | HandleExceptions.php // 继承core/HandleExceptions
| +---middleware
| | ApiMiddleWare.php
| | ControllerMiddleWare.php
| | IsAuthMiddleWare.php
| | WebMiddleWare.php // web.php加载的中间件
| \---models
| User.php // 示例模型
+---config
| database.php // 数据库配置
| log.php // 日志配置
| view.php // 视图配置
+---core
| | Config.php // 配置
| | Controller.php // 基础控制器
| | HandleExceptions.php // 异常&错误 托管处理
| | PipleLine.php // 管道
| | Response.php // 响应
| | RouteCollection.php // 路由
| | SwooleContext.php // 协程上下文管理
| | TestCase.php // 基础测试文件
| +---database
| | | Database.php
| | +---connection
| | | Connection.php
| | | ConnectionInterface.php
| | | MysqlConnection.php // mysql链接
| | | SqlServerConnection.php
| | +---model
| | | Builder.php // 模型构造器
| | | Model.php // 基础模型
| | \---query
| | Grammar.php
| | MysqlGrammar.php // 编译成sql语句
| | QueryBuilder.php // 查询构造器
| +---log
| | | Logger.php // 日志管理
| | \---driver // 不同类型日志实现
| | DailyLogger.php
| | StackLogger.php
| |
| +---request
| | PhpRequest.php // 请求
| | RequestInterface.php
| \---view
| Blade.php // laravel模板引擎
| Thinkphp.php // tp模板引擎
| View.php // 视图适配器
| ViewInterface.php
+---public
| index.php // 单一入口文件
+---routes
| api.php
| web.php // 大部分功能可以在这里运行
+---storage
| daily.log // 框架日志 按日期类型
| php_frame.log // 框架日志
| swoole.pid // swoole的进程pid
+---tests
| ExampleTest.php // 测试示例文件
+---phpunit.xml // phpunit的配置
+---app.php // 框架要经过这个加载
+---swoole.php // swoole的http服务器
文章目录#
基础篇#
- 第一步 创建框架目录
- 引入 composer 自动加载
- composer 自动加载 (解释篇)
- 添加函数文件 helpers.php
- 创建容器 (反射解析依赖 注册树模式)
- 关于 psr 规范解释
- 关于” 容器” “契约” “依赖注入” (解释篇)
- 初始化请求 (Request)
- 响应 (Response)
- 路由一 (路由组实现)
- 路由二 (加入中间件)
- 配置信息 (类似 laravel)
- 数据库连接 (多例模式)
- 查询构造器 (query builder)
mvc 实现#
- M 模型实现 (数据映射 + 原型 模式)
- C 控制器实现 + 控制器中间件
- V 视图实现 (Laravel Blade 引擎)
- V 视图切换成 (ThinkPhp 模板 引擎)
其他轮子#
- 日志
- 自定义异常 (异常托管)
- 单元测试 (phpunit)
- 替换成 swoole 的 http 服务器
- 协程上下文解决 request 问题
- qps 测试
- 发布到 packagist.org
qq 群#
手摸手框架问题解答群#
站长交流群#
欢迎站长进来换友链 & 扯淡。
(非站长勿入)
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: