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

教程地址

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

0-1 写出来的。

刚写完的文档,有什么问题,欢迎指正。
(最下面有qq群)

可能会帮助你更容易理解框架的文档

  1. 深入 Laravel 核心: 这个有点难度,可以简单了解下
  2. PHP 设计模式全集: 官方的设计模式,略难。
  3. php设计模式学习: 简单方式实现设计模式,没有那么完善。
  4. PHP PSR 标准规范: 了解就好了。

源码

教程源码: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测试

qq群

手摸手框架问题解答群

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

站长交流群

欢迎站长进来换友链&扯淡。:smile:
(非站长勿入)
[手摸手带你创建php现代化框架] 教程终于写完了

本作品采用《CC 协议》,转载必须注明作者和本文链接
专心学习不瞎搞
本帖由系统于 2个月前 自动加精
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 19

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

2个月前 评论

厉害,大佬,学习了

2个月前 评论
xiaoAgiao

支持一波,收藏了

2个月前 评论

支持一下,学习

2个月前 评论

厉害了。下月学习一下

2个月前 评论
流浪剑客

支持支持

2个月前 评论
AloneUtopia

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

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

2个月前 评论
lyxxxh (楼主) 2个月前
AloneUtopia (作者) 2个月前
lyxxxh (楼主) 2个月前

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

2个月前 评论
lyxxxh (楼主) 2个月前

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

2个月前 评论

大牛!!

2个月前 评论
lyxxxh (楼主) 2个月前

有点快啊。

2个月前 评论
lyxxxh (楼主) 2个月前

膜拜。抽空学习一哈。这样才能更深层的理解框架的运作原理吧。不然整天光用工具了。

2个月前 评论

:+1:大哥好强,想照着你的教程敲一遍

1个月前 评论

大佬 代码里有4,5处错误 我怀疑是不是大佬你故意埋的坑啊

1个月前 评论
lyxxxh (楼主) 1个月前
cookie20201208 (作者) 1个月前
cookie20201208 (作者) 1个月前
lyxxxh (楼主) 3周前

第4章:创建容器 注册树模式 有问题,应该是调用build()方法 file

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

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!