PHP8 之 mini-laravel

介绍

mini-laravel 是基于 PHP8 编写的一个用于学习 Laravel 的项目(仅用于学习用途)

主要实现了 服务容器、中间件、路由、一些核心启动类如:加载配置文件……;比较有特色的一点是利用 PHP8 新增的注解特性实现了路由的定义

像一些服务提供者如:AuthServiceProvider、DatabaseServiceProvider…… 都没有写,没有写的原因就是每个分析下来的时间太长了,而且个人认为将 Laravel 的核心机制弄明白之后再去看这些会容易很多(妈妈再也不用担心我不知道这个骚方法是怎么来的啦)

由来

  • 我入门 Laravel 也是看的社区的教程(在这里感谢一下社区的教程 收获很多),但是在教程中总是看见使用一些找不到源头的骚操作,还有控制器里方法的参数注入(我明明没有 new 为什么可以用??)相信很多同学入门的时候有这个疑惑

  • 入门之后在项目中开始使用 Laravel ,虽然写业务没有什么问题但有些时候架不得好奇会想去窥探源码发现根本不知道如何下手。。。
    在这个时候发现社区有刨析源码的文档 《深入 Laravel 核心》,看了这个文档之后对 Laravel 的核心机制有了粗略的了解之后看源码的时候还是感觉有点困难;
    继续找社区的文档发现了《Laravel 之道》,这位老哥是真滴牛批硬是给 Laravel 的每一行代码都给你讲了(:+1:100分)。贴一个截图
    PHP8 之 mini-laravel
    这是看了老哥的 Composer 加载原理之后,我非常激动的给老哥发了个私信哈哈哈

  • 虽然看了上面两个文档之后对 Laravel 的原理算是了解了但是总是会忘记一些枝头末尾的关联片段,再加上当时 PHP8 刚刚发布,我就想为什么不写下来呢顺便熟悉一下 PHP8 新特性

过程

在写路由部分时我被 Laravel 的路由源码给绕晕了:dizzy_face:,然后看了 老司机带你实现 Laravel 路由注册功能 这篇文章之后,对路由的实现有了比较清晰的认识 感谢老司机哈哈哈 @Dennis_Ritchie,再回来看源码的时候就轻松很多了

因为用的 PHP8 难免要 Google,意外发现了这个 laravel-route-attributes 仓库,就有了上面的注解路由实现当然大部分参考自这个仓库

好像整个写下来最难的部分应该就是路由了~

可能的帮助

如果你在看 Laravel 的源码有不明白的地方,可以看看 mini-laravel 的对照实现会简单很多,Laravel 的源码总是穿梭于各个包之间:grin:

然后我总结了我在 mini-laravel 中使用到的 PHP8 的新特性与一些不太常用到的类

总结

在这个过程中我觉得耐心很重要~ 想一个场景:你点开一个方法结果里面是这样的
PHP8 之 mini-laravel
是不是很绝望!!!但是这是极少数案例~
最后祝各位 新年快乐、永不加班~

本作品采用《CC 协议》,转载必须注明作者和本文链接
本帖由系统于 3个月前 自动加精
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 4
fatrbaby

不错,Laravel的下个大版本很可能会按照这个路子走。

3个月前 评论

LZ 可以去当 laravel 文档的译者了,属实吾辈楷模 :thumbsup:

3个月前 评论

可以有(优秀)

3个月前 评论

对 laravel 有改善建议的话,可以尝试给 laravel 项目提交 PR ,这样你的代码有可能服务更多的人,方便大家

3个月前 评论
tu6ge-php (作者) 3个月前
lidongyoo (楼主) 3个月前
lidongyoo (楼主) 3个月前

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