时间:2022-10-20 22:32:42 | 浏览:3506
工作这么多年,也面试过很多PHP工程师,我发现很多PHP工程师只停留在使用框架的层面,然而对框架底层根本没有深入去了解,那么这就会给自己的职业生涯带来一定的瓶颈,当遇到问题的时候你就无从下手,不知道如何去排查与调试,更别说去扩展核心库,相反,如果大家对框架底层源码有一定的了解,这样的问题就变得简单很多, 学习某一项语言都是需要耐心,学习框架贵在坚持,这会让你对PHP全局以及框架底层有质的飞跃。
总而言之:搞技术的,既然入坑了,就得知道一个理念:知其然还得知其所以然,停留在会用阶段,职业生涯肯定走的不远!因为你没有深入。。。
那么有小伙伴就开始质疑了,那我要如何选择一门框架呢?就拿PHP来说吧,PHP有N多框架,比如YII,ThinkPHP,laravel等等,这几个都有自己的优势和特点,在国内ThinkPHP确实用的很多,这里其实我想表达的是:不管你学习哪个框架并不重要,我们需要选择一个然后安心的学好它的底层,学习需要坚持,耐心+时间,比如你学会了一个框架之后,那么其他框架你自学下很快就会上手,因为框架的核心思想基本是相通的,它们的基础都是PHP,不要想得太复杂。那么现在就就拿ThinkPHP来举例,我们如何学习他的底层呢?
我们可以从以下几个方向入手:
一、 框架中是如何加载这些类库的?
学习框架底层如何加载类库这一步是必须的,因为我们要知道框架是如何加载不同目录下的不同文件,如果是框架通过composer安装的类库,同样我们都要弄清楚是如何被加载到框架的,那我们就要从thinkLoader.php文件入手了。接下来如何做?所以学习框架底层一定要带着问题和思考的态度去学习,这样成长肯定很快。
比如我想自己创建一个自定义leifeng目录 也想把它被加载到框架中,当你了解了如何加载文件的,也试试加载自己定义的文件吧。这个时候恭喜你底层第一步你搞懂了。
二、设计模式学习(工厂模式、单例模式、注册树模式、门面模式等)
你想提升自己php的技能,那你就必须学习一下设计模式,虽然这个经常在面试中遇到,但是希望你不仅仅只是为了应付面试,而是要真正的弄清楚什么是设计模式。我之前整理过,可以看看这个教程
【进阶】PHP常见的设计模式,我觉得你还是要搞懂!
【视频】设计模式是成功经验的总结,趁早学对进阶很有帮助!
三、反射机制学习
什么是反射呢?
在PHP的面向对象编程中的对象,它被系统赋予自省的能力,而这个自省的过程,我们把它叫做反射。
我们对反射的直观理解可以是,根据达到地,找到出发地和来源这么一个过程,通俗来讲就是,我给你一个光秃秃的对象,完事你可以根据这个对象,知道它所属的类,拥有哪些方法。
在PHP中,反射是指在PHP运行状态中,扩展分析PHP程序,导出或者提取出关于类、属性、方法、参数等的详细信息,包括注释。这种动态获取信息以及动态调用对象方法的功能,被称为反射API。
四、依赖注入 控制反转
经常听过吧,是否有去了解,敲敲代码实现一下。简单了解一下
(1)依赖注入是从应用程序的角度在描述,可以把依赖注入,即:应用程序依赖容器创建并注入它所需要的外部资源;
(2)而控制反转是从容器的角度在描述,即:容器控制应用程序,由容器反向的向应用程序注入应用程序所需要的外部资源.
我之前整理过,可以看看这个教程
【推荐】什么是依赖注入与Ioc容器
五、研究TP框架中的容器、门面Facade think/Container thinkFacade
六、路由
以上2-6点的具体分析 可以直接通过index.php入口文件去跟进,看看框架里面走了哪些流程,如何实现,用到哪些工具栏,环境变量,如何配置等等。
说到框架的路由是如何做的,通过跟进,我们会在App类中 在routeInit路由初始化这个方法,它是路由的核心,具体基础路由类库是如何引入的。你都能看的明白的
七、底层控制器、模型、视图的基础类库分析
八、其他一些工具类的分析
比如:异常处理、缓存等核心类库分析。
以上这些基本上涵盖了框架的核心内容,代码本来就是很枯燥的一个东西,在研究框架底层这个过程更是枯燥和痛苦的,但是我们需要坚持【坚持下来就能改变世界了】阅读框架代码不是看一遍就完事了,看不懂,我们就多看几遍,并且在看的过程中我们还需要做点如下几点:
1、在你有疑问的地方打上断点,输出相关的内容出来 看看他到底返回什么内容,因为这样更加直观,便于你真正意义上理解
2、我们需要思考它为什么要这样做?我这样做可以吗?能不能变通、或者有没有更好的方法?因为带着问题和思考的态度去学习 更加有利于你的个人成长
3、在研究源码的时候有不懂得地方肯定很正常的,这个时候一定要记住多利用百度或者谷歌
4、有个讲师提醒我,一定要多画图, 因为您去研究源码然后还能通过图的方式画出来 这更加有基于您学习以及深入理解,它真的能起到事半功倍的作用!
比如下面的图解:
类自动加载的时候会用到的一些属性,并且类的自动加载和他们息息相关
底层容器的一些属性内容
instances属性就是最终的容器核心
框架底层配置文件走过的流程图
在这里我主要是想表达我们一定要边看源码,边通过图例记录下来,深入理解,对你学习很有帮助的。写到这里,感谢阅读!
让大家对PHP以及底层框架有更深入的理解,在这里推荐一套学习教程,一步步分析ThinkPHP的底层源码,在分析的过程中,逐步提升技术水平。
课程目录
1-1 面试必备,加薪首选课
1-2 为什么要学习框架源码
1-3 如何高效的学习框架源码
1-4 版本要求以及框架获取和安装
2-1 类自动加载初始
2-2 spl_autoload_register初学习
2-3 自动加载Loader深度分析
2-4 自动加载Loader深度分析
2-5 自动加载Loader深度分析
2-6 在框架中新增自定义类
2-7 composer下类的自动加载
3-1 配置文件概述
3-2 PHP底层ArrayAccess类巧用分析
3-3 性能体现
3-4 高性能yaconf编译安装
3-5 load加载深度分析
3-6 load加载深度分析
3-7 TP框架底层优化
3-8 config底层类库优化 试看
3-9 其他内容源码分析
4-1 单例模式
4-2 注册树模式
4-3 如何理解依赖注入和控制反转
4-4 PHP反射机制深入学习一
4-5 PHP反射机制深入学习二
4-6 玩转自己的容器类
4-7 Countable巧用
4-8 获取容器里面的实例分析 试看
4-9 Container容器类实战
4-10 类库分析
4-11 图例分析
4-12 让小伙伴真正意义理解门面模式
最后,大家如果觉得本文不错就点个赞吧~! “点关注,不迷路”,每天带你分享不一样的PHP技术资讯。
#力争上游新梧州#吊臂在半空忙碌吊运器材、挖掘机在地上往返开挖……7月7日,市金海不锈钢有限公司1050毫米不锈钢全连轧绿色生产线项目建设现场,该公司总经理办公室经理毛羽顶着烈日紧盯施工进度。“现场安排两台吊机,每天工作16小时。”毛羽说,
会议指出,市委十届二次全会对三明市学习贯彻党的十九届六中全会和省第十一次党代会精神作出全面部署,主题鲜明、内涵丰富、意义重大,将对三明。12月14日,区委书记温毅主持召开区委常委会会议,传达学习市委十届二次全会精神,提出三元区初步贯彻意见。
《信访工作条例》(以下简称《条例》)5月实施以来,江北把深入学习宣传贯彻落实《条例》作为一项重要政治任务,制定《江北区学习宣传贯彻落实〈信访工作条例〉工作方案》,以集中宣传月活动为契机,扎实开展系列学习宣传活动,推动全区形成学习宣传贯彻落实
会议现场。通讯员 供图荆楚网(湖北日报网)讯(通讯员胡贤锋)11月17日,黄石港区委书记严荣勇主持召开区委理论学习中心组(扩大)学习会议,传达学习党的十九届六中全会精神和市委相关会议精神,安排部署全区贯彻落实工作。会议认为,党的十九届六中全
9月26日晚上,“中原大讲堂”实施优势再造战略与推动枢纽经济高质量发展主题学习报告会举行。县四大家领导张团结、王静娴、周燕,周明河及各县直单位负责人在民权分会场收听收看。报告会上,省发展改革委党组成员、副主任李新国以《实施优势再造战略推动枢
会议现场。河北省承德市双滦区为扎实开展好党史学习教育和“四史”宣传教育工作,结合省、市、区委安排部署,6月24日,区委理论学习中心组召开集中(扩大)学习会议。承德市委党校副校长聂志信教授授课。他重点围绕深入学习党史、“四史”需要注意和把握的
图为“小红帽”义务宣讲员为社区居民宣讲。樊加伟摄河北新闻网讯(河北日报记者翟一杉 通讯员樊加伟)组织“红色景点”参观、举办“全面读史”活动、开展“小红帽”义务宣讲……连日来,河北省衡水市冀州区积极创新形式,动员广大党员主动参与到党史学习教育
忻州网讯(通讯员:张玉虎)9月29日下午,定襄县召开专题会议传达学习忻州市第五次党代会精神,迅速掀起学习、宣传、贯彻的热潮,用市党代会精神统一全县各级党组织、全体党员和广大干部群众的思想和行动,奋力推动定襄蹚出一条全方位高质量赶超型跨越
随着教育部对教培行业的整改,一些公立学校的老师晚上放学后带孩子到家中做写作业的现象有些收敛,但对于小学生来讲,由于放学时间和家长上班存在时间差,导致一些孩子没办法去接孩子,后来教育部提倡公立学校进行延长放学时间,已解决家长接孩子难的问题。针
关注语文教学发展,解决语文学习困惑。每个家长都觉得自己应付小学生的语文学习很容易,但真正面对孩子在学习中的问题:表达能力差、写字写得丑、作文不会写、阅读不爱看的时候,还是会怀疑自我辅导的能力。到底是辅导得不当,还是孩子的学习能力就是这样,遇