[手摸手带你创建php现代化框架] 教程终于写完了

教程地址

手摸手带你创建php现代化框架

0-1 写出来的。

刚写完的文档,有什么问题,欢迎指正。

(发布时间不对劲? 没错 通宵了 先打会游戏 等下再睡觉)
[手摸手带你创建php现代化框架] 教程写完了

源码

教程源码:php_frame (giteee)
原型源码: php_frame (github)

原型源码: 先写好框架,就是 原型源码, 才开始写此教程。
教程源码: 按此教程步骤走下去,会最终变成教程源码,大部分都是复制 原型源码 的。

Ps: 自觉些 把 star 交出来 (滑稽)

设计方向

闭门造轮子

听到很多,不要创建重复轮子了!

最后终究还是要 学习框架底层 = 学习轮子,这也此框架目的之一。

闭门造轮 成为这个框架最大的特色。

所以此教程不是 手摸手带你组装php现代化框架, 而是 手摸手带你创建php现代化框架

不完善全部代码

指不是框架运行必要的代码, 本教程不会写!

读者自行完善, 这也可以加深读者的印象。

比如路由, get``post写好了,
https://cdn.learnku.com/uploads/images/202009/11/25979/PdJ81QhSkt.png!large

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测试
本作品采用《CC 协议》,转载必须注明作者和本文链接
专心学习不瞎搞
本帖由系统于 1周前 自动加精
lyxxxh
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 12

支持,mark一下,有空学习学习 :+1:

1周前 评论

厉害,大佬,学习了

1周前 评论
xiaoAgiao

支持一波,收藏了

1周前 评论

支持一下,学习

1周前 评论

厉害了。下月学习一下

1周前 评论
流浪剑客

支持支持

1周前 评论
AloneUtopia

学习一波,辛苦了 :+1:

如果看云文档上贴的代码的注释 能更完整、规范一点的话,那可就更完美了 :see_no_evil:

1周前 评论
lyxxxh (楼主) 1周前
AloneUtopia (作者) 4天前
lyxxxh (楼主) 4天前

第一个echo 居然不是 ‘hello word’; 差评

1周前 评论
lyxxxh (楼主) 1周前

真棒,刚好在找这方面的教程

6天前 评论

大牛!!

4天前 评论
lyxxxh (楼主) 4天前

有点快啊。

4天前 评论
lyxxxh (楼主) 4天前

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!