为了账号安全,请及时绑定邮箱和手机立即绑定

如何较好的学习框架底层源码?

标签:
PHP

各位小伙伴大家好,我是singwa , 想和大家分享一下最近几年的一些的感悟,工作这么多年我面试过很多PHP工程师,并且接触过慕课网上很多学生,我发现很多工程师只停留在使用框架的层面,对框架底层根本不清楚,那么这就会给自己的职业生涯带来瓶颈,当遇到问题的时候根本无从下手如何排查,更别说去扩展核心库,如果大家对框架底层源码有一定的了解,这样的问题就变得简单很多, 学习框架贵在坚持,这会让您对PHP全局以及框架底层有质的飞跃, 总而言之: 做技术就得知道一个理念 – 知其然还得知其所以然,停留在会用阶段 职业生涯肯定走的不远!
图片描述

那么有小伙伴就有质疑了,该如何选择框架学习呢?拿PHP来说,有很多框架,比如YII 、 TP、laravel等等,这几个都有自己的优势和特点,在国内TP确实用的很多,我想说的是具体学习哪个框架并不重要,我们需要选择一个安安心心的学好他的底层(如果您时间比较充裕的话,全部学习也是可以的,哈哈),因为你会了一个框架之后,其他框架你自学下很快就会上手,因为框架的核心思想基本是相通的,本文章我就拿TP来举例,我们如何学习他的源码呢?图片描述

我们需要从几个方向入手:

一、 框架中是如何加载这些类库的?
我认为学习框架底层 这一步是必须的,我们要知道框架是如何能加载不同目录下的不同文件,并且如果是通过composer安装的类库 也得知道他是如何被加载到框架的,这个时候可以去跟进think\Loader.php 文件即可。那我们研究完毕这个类库之后,我们还得自行的去做下思考, 比如我想自己创建一个自定义singwa目录(如图一) 也想把它被加载到框架中,如何做? 所以学习框架底层一定要带着问题和思考的态度去学习,这样成长肯定很快。

   ![图片描述](//img1.sycdn.imooc.com//5c9fa23f00013dec04580516.png)

图片描述
二、设计模式学习(工厂模式、单例模式、注册树模式、门面模式等)

三、反射机制学习

四、依赖注入 控制反转 等学习

五、研究框架中的 容器、门面Facade
think/Container think\Facade

六、路由
这里地方的分析 可以直接通过index.php 入口文件 一步一步的跟进,看看框架里面走了哪些流程, 可能这里面会用到一些其他的工具类,比如
配置文件(config),
环境变量:Env

并且还得思考框架的路由是如何做的,在App类中 会走到routeInit路由初始化这个方法,这里面是路由的核心,它会引入其他的基础路由类库。

七、底层控制器、模型、视图的基础类库分析

八、其他一些工具类的分析 比如: 异常处理、缓存等核心类库分析

总之上面这些基本涵盖了框架的核心内容,在研究框架源码的过程是一件枯燥和痛苦的事情,但是我们需要坚持,阅读框架代码不是看一遍就完事了,我们需要多看几遍,并且在看的过程中我们还需要做点如下几点:
1、 在您有疑问的地方打上断点,输出相关的内容出来 看看他到底返回什么内容,因为这样更加直观,便于您真正意义上理解
2、 我们需要思考 它为什么要这样做? 我这样做可以吗? 能不能变通、或者有没有更好的方法? 因为带着问题和思考的态度去学习 更加有利于您的个人成长。
3、在研究源码的时候有不懂得地方肯定很正常的,这个时候一定要记住多利用百度或者谷歌
4、一定一定要多画图, 因为您去研究源码然后还能通过图的方式画出来 这更加有基于您学习以及深入理解,它真的能起到事半功倍的作用! 比如下面这些图

图片描述
图二 :在这个图中 就是类自动加载的时候会用到的一些属性,并且类的自动加载和他们息息相关。

图片描述
图三: 底层容器的一些属性内容 , instances属性就是最终的容器核心。。。。

图片描述
图四: 框架底层配置文件走过的流程图

图片描述
图五:TP配置文件的种类

还有很多图哈,这个地方我只是列举了一小部分,在这里我主要是想表达 我们一定要边看源码,边通过图例记录下来,因为它确实看上去很清楚,在您下次研究的时候绝对能起到很好的作用。

其实当您研究完毕之后,我个人建议您可以通过这个框架的思想 自己写一个小小的框架,因为这样您就可以把这些知识点全部的串联起来,对您的帮助肯定非常巨大。

总之: 您研究完毕这个TP框架之后,对您的技术成长会有质的飞跃的, 这样您再看其他的框架源码其实都是小意思了,比如YII等。

最后打一小广告,哈哈

2019年4月3日慕课网上见:
经过半年的时间给大家带来一门课程《BAT资深工程师由浅入深分析Tp5&Tp6底层源码》 singwa老师将在本套课程为大家一步步分析ThinkPHP的底层源码,在分析的过程中,逐步提升技术水平。掌握课程所授内容,并教大家如何变通,轻轻松松应对不同版本以及不同的框架,想必这会让您对PHP全局以及框架内核有质的飞跃, 总而言之: 做技术就得知道一个理念 – 知其然还得知其所以然,停留在会用阶段 职业生涯肯定走的不远!

本课程特色
1、 本套课程我们采用原理+小实战的方式进行讲解,每个环节我们都会对原理进行分析 ,然后针对场景会做一些小的实战操作,比如类的自动加载原理,为什么能加载composer工具安装的类库文件, 配置文件原理,容器原理等等,在这块的授课过程中 还会采用大量图例的方式,因为分析源码是一件枯燥的事情,如果配合图例会更加有利于小伙伴直观的理解;总而言之分析原理的过程很枯燥,但坚持下来我们的收益会巨大!

2、 在本套课程中我们会采用TP双版本进行分析,当前主流的框架还是5.1,我们还会分析即将发布的TP6, 他们有一些不一样的地方,通过分析双版本能让大家以后轻轻松松应对其他不同的版本框架,最主要的是能让这种思想运用到其他框架源码分析中 比如 YII larvale ,总而言之:框架的核心思想是相通的,您了解了一种框架的分析思路,其他框架你会轻轻松松搞定。

3、本套课程老师承诺会随着官网大版本的不断更新课程也会持续更新 让大家了解最新的技术和思想

课程技术点
1、 类的自动加载机制解刨
2、 容器、依赖注入 控制反转 中间件 钩子以及行为深度分析
3、 设计模式 单例 工厂 注册树 门面模式等
4、 底层路由深度分析
5、 面向切面编程
6、 反射机制
7、 底层控制器 模型 视图等深度分析
8、 异常处理 缓存等核心类库深度分析
以上这些都是TP框架的核心,我们会对她进行深入分析以及思考,通过分析完这些核心之后您会发现自己的技术会提升N个档次,并且能在面试官面前得瑟一波

课程中我们不仅仅是讲解这些硬实力,我们还有软实力相送,接下来我们来看下软实力中的课程附加值

1、 根据我多年担任我厂面试官的经验,我会在课程中花一部分时间传授大家如何轻轻松松搞定面试官-框架层面的面试技巧

2、 我发现很多小伙伴工作几年之后 技术上以及晋升加薪上总走不远,其实这块是有很多技巧的, 所以老师会给大家分享下自己这8年来的个人成长经历,让大家在职场中少走很多弯路, 重点是让大家轻轻松松应对晋升和加薪

3、 上线3日内 4月3号 - 4月5号,凡购买本套课程者,singwa老师自行会给大家优惠,和慕课网官网优惠不冲突, 加老师QQ或者微信返现红包

4、 送签名书活动,具体细节待定

5、会从学员中抽选一批学员 参与我2019年出书计划(laravel底层源码) 具体细节如下:

 5.1   6月1日之前 作者名单确定,出书计划启动仪式
 5.2   laravel源码阅读计划, 由老师带团指导,只要您有上进心 保证您能轻轻松松        应对
 5.3   每周三 五 六 晚上定期讨论laravel源码
 5.4   书大纲制定
 5.5   人员分配 编写书文档 
 5.6   文档审核校验讨论
 5.7   出版

那么会有小伙伴有疑问了,我没有出书经验怎么办? 出书有什么好处?
第一: 没有出书经验没有关系,只要您能对技术有所追求就行
第二:出书有以下收益:
1、技术上提升
2、知识点沉淀
3、给你带来人气,更重要的是它能为您的简历增添一道美丽的风景,面试官见你都仰慕三分,哈哈。

点击查看更多内容
33人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
全栈工程师
手记
粉丝
2.1万
获赞与收藏
670

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消