{"id":21058380,"url":"https://github.com/kevinyan815/learning_laravel_kernel","last_synced_at":"2025-05-16T12:06:07.062Z","repository":{"id":41278100,"uuid":"129251091","full_name":"kevinyan815/Learning_Laravel_Kernel","owner":"kevinyan815","description":"Laravel核心代码学习","archived":false,"fork":false,"pushed_at":"2024-10-08T09:14:50.000Z","size":501,"stargazers_count":888,"open_issues_count":2,"forks_count":170,"subscribers_count":45,"default_branch":"master","last_synced_at":"2025-03-30T22:04:51.131Z","etag":null,"topics":["database","facade","ioc-container","laravel","middleware","serviceprovider","source-code"],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kevinyan815.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-04-12T12:54:06.000Z","updated_at":"2025-03-05T10:47:53.000Z","dependencies_parsed_at":"2024-11-29T10:18:57.540Z","dependency_job_id":null,"html_url":"https://github.com/kevinyan815/Learning_Laravel_Kernel","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kevinyan815%2FLearning_Laravel_Kernel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kevinyan815%2FLearning_Laravel_Kernel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kevinyan815%2FLearning_Laravel_Kernel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kevinyan815%2FLearning_Laravel_Kernel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kevinyan815","download_url":"https://codeload.github.com/kevinyan815/Learning_Laravel_Kernel/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247563930,"owners_count":20958971,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["database","facade","ioc-container","laravel","middleware","serviceprovider","source-code"],"created_at":"2024-11-19T17:07:42.031Z","updated_at":"2025-04-06T23:09:57.727Z","avatar_url":"https://github.com/kevinyan815.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Learning_Laravel_Kernel\n\nLaravel核心代码学习\n\n## 前言\n\n如果你对`Laravel`里面的依赖注入、服务绑定、服务解析等等这些东西很好奇，并且觉得只有理解了一个框架的核心代码才能真正把一个框架用好才能写出最佳实践，那么这个教程对你会很有帮助。教程完整覆盖了`Laravel`核心的所有内容，并且根据开发者使用`Laravel`的通用场景开始逐步深入内核讲解整个框架核心流程中涉及到的方方面面，整个教程的目录顺序也是根据用`Laravel`进行开发时常涉及的部分编排的。相信你认真学完这个教程自己融汇贯通后就能完全掌握`Laravel`并胜任用它设计和架构生产系统的职责。\n## 面向的人群\n\n要想很好地理解文章的内容你需要具备一定的`PHP`基础和`Laravel`的知识，我并不会解释核心里的每一行代码，更多的是通过梳理代码流程来解释`Laravel`核心模块里最典型功能的设计思路和具体实现。所以我希望读者可以将文章内容看作是源代码的导读，跟随文章自己逐步地去看一遍`Laravel`每个核心组件的代码，如果遇到理解起来比较困难的地方就去补齐那里用到的知识再来继续阅读，我也希望读者在理解了文章里说的那些典型功能后能够自己再去举一三地看看模块里其他功能的源代码。相信看完`Laravel`核心的代码后你不仅能更熟练地使用`Laravel`也能在其它基础知识方面有所提高。\n\n## 涉及的内容\n\n文章主要专注于`Laravel`核心的学习，包括:服务容器、服务提供器、中间件、路由、`Facades`、事件驱动系统、Auth用户认证系统以及作为核心服务的`Database`、`Request`、`Response`、`Cookie`和`Session`。`Laravel`里其它的部分也都是作为服务注册到服务容器里提供给应用使用的，当你理解了上面那些东西后再去看其它的服务也就会很容易理解了。在学习源码的过程中我会向读者解释关于这些核心模块的常见问题比如：使用`DB`或者`Model`操作数据库时`Laravel`是什么时候连接上数据库的？ 注册到容器的服务是怎么被解析出来的等等。\n\n## 关于框架版本\n在通过这个项目学习`Laravel`核心代码时请使用`Laravel5.5`版本，由于服务容器和中间件两篇文章成稿比较早那会还在使用5.2版本的Laravel做项目所以引用的代码也来自5.2版本，其余章节的代码均引用自`Laravel5.5`的核心，两个版本的核心代码差异很小我已经在这两篇文章中标注出差异的地方所以不影响读者使用这个项目来学习`Laravel5.5`版本的核心代码。\n\n## Contact\n- [Open an issue](https://github.com/kevinyan815/Learning_Laravel_Kernel/issues)\n- Gmail: kevinyan815@gmail.com\n- 公众号: \"网管叨bi叨\"\n\n![](https://github.com/kevinyan815/Learning_Laravel_Kernel/blob/master/images/WX20200119-143845%402x.png)\n\n## 文章目录\n\n- [类的反射和依赖注入](https://github.com/kevinyan815/Learning_Laravel_Kernel/blob/master/articles/reflection.md)\n- [服务容器(IocContainer)](https://github.com/kevinyan815/Learning_Laravel_Kernel/blob/master/articles/IocContainer.md)\n- [服务提供器(ServiceProvider)](https://github.com/kevinyan815/Learning_Laravel_Kernel/blob/master/articles/ServiceProvider.md)\n- [外观模式(Facade Pattern)](https://github.com/kevinyan815/Learning_Laravel_Kernel/blob/master/articles/FacadePattern.md)\n- [Facades](https://github.com/kevinyan815/Learning_Laravel_Kernel/blob/master/articles/Facades.md)\n- [路由](https://github.com/kevinyan815/Learning_Laravel_Kernel/blob/master/articles/Route.md)\n- [装饰模式(Decorator Pattern)](https://github.com/kevinyan815/Learning_Laravel_Kernel/blob/master/articles/DecoratorPattern.md)\n- [中间件](https://github.com/kevinyan815/Learning_Laravel_Kernel/blob/master/articles/Middleware.md)\n- [控制器](https://github.com/kevinyan815/Learning_Laravel_Kernel/blob/master/articles/Controller.md)\n- [Request](https://github.com/kevinyan815/Learning_Laravel_Kernel/blob/master/articles/Request.md)\n- [Response](https://github.com/kevinyan815/Learning_Laravel_Kernel/blob/master/articles/Response.md)\n- [Database 基础介绍](https://github.com/kevinyan815/Learning_Laravel_Kernel/blob/master/articles/Database1.md)\n- [Database 查询构建器](https://github.com/kevinyan815/Learning_Laravel_Kernel/blob/master/articles/Database2.md)\n- [Database 模型CRUD](https://github.com/kevinyan815/Learning_Laravel_Kernel/blob/master/articles/Database3.md)\n- [Database 模型关联](https://github.com/kevinyan815/Learning_Laravel_Kernel/blob/master/articles/Database4.md)\n- [观察者模式](https://github.com/kevinyan815/Learning_Laravel_Kernel/blob/master/articles/Observer.md)\n- [事件系统](https://github.com/kevinyan815/Learning_Laravel_Kernel/blob/master/articles/Event.md)\n- [用户认证系统(基础介绍)](https://github.com/kevinyan815/Learning_Laravel_Kernel/blob/master/articles/Auth1.md)\n- [用户认证系统(实现细节)](https://github.com/kevinyan815/Learning_Laravel_Kernel/blob/master/articles/Auth2.md)\n- [扩展用户认证系统](https://github.com/kevinyan815/Learning_Laravel_Kernel/blob/master/articles/Auth3.md)\n- [Session源码解析](https://github.com/kevinyan815/Learning_Laravel_Kernel/blob/master/articles/Session.md)\n- [Cookie源码解析](https://github.com/kevinyan815/Learning_Laravel_Kernel/blob/master/articles/Cookie.md)\n- [Contracts契约](https://github.com/kevinyan815/Learning_Laravel_Kernel/blob/master/articles/Contracts.md)\n- [加载和读取ENV配置](https://github.com/kevinyan815/Learning_Laravel_Kernel/blob/master/articles/ENV.md)\n- [HTTP内核](https://github.com/kevinyan815/Learning_Laravel_Kernel/blob/master/articles/HttpKernel.md)\n- [Console内核](https://github.com/kevinyan815/Learning_Laravel_Kernel/blob/master/articles/ConsoleKernel.md)\n- [异常处理](https://github.com/kevinyan815/Learning_Laravel_Kernel/blob/master/articles/Exception.md)\n- [结束语](https://github.com/kevinyan815/Learning_Laravel_Kernel/blob/master/articles/Farewell.md)\n\n\n\n## 其他推荐\n- [Go Web编程入门指南](https://github.com/go-study-lab/go-http-server)\n- [Laravel最佳实践](https://github.com/kevinyan815/laravel_best_practices_cn) \n- [我的Golang开发手记](https://github.com/kevinyan815/gocookbook)\n\n**另外最近我推出了自己的Go实战专栏课程，专栏配套一个专属的私有项目，通过tag版本追踪记录每个章节代码的变更，让大家能轻松跟上学习**。\n\n**专栏分为五大部分**：\n\n\u003cimg width=\"854\" alt=\"image\" src=\"https://github.com/user-attachments/assets/9b7b2ceb-6e3f-4c38-89a8-5fb5c5a05d98\"\u003e\n\n**访问：https://xiaobot.net/p/golang 或者扫码下方海报二维码可查看课程详情**\n\n\u003cimg width=\"361\" alt=\"image\" src=\"https://github.com/user-attachments/assets/576eb2be-4cd3-43ab-9c61-ec73d900549b\"\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkevinyan815%2Flearning_laravel_kernel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkevinyan815%2Flearning_laravel_kernel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkevinyan815%2Flearning_laravel_kernel/lists"}