时间:2022-10-20 22:32:42 | 浏览:4680
工作这么多年,也面试过很多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技术资讯。
Thinkphp:=> 简介:是由上海顶想公司开发的一款,PHP写成的,开源的MVC框架;官网:http://www.thinkphp.cn下载:https://github.com/top-think/framework 环境要求:
本文主要简析两个国产的PHP框架ThinkPHP与SpeedPHP。通过学习发现,它俩在很多方面有着相似但又不同的地方:1.单一入口,二者都是单一入口文件。每个app都需要一个入口文件,且只能有一个入口文件。ThinkPHP生而就有多app
PHP框架是什么?PHP框架提供了一个用以构建web应用的基本框架,从而简化了用PHP编写web应用程序的流程。这样不但节省开发时间,有助于建立更稳定的应用,而且减少了重复编码的开发。框架还可以帮助初学者建立更稳定的应用服务,这可以让你花更
截至目前(2014.2), PHP 的最新稳定版本是 PHP5.5, 但有差不多一半的用户仍在使用已经不在维护的 PHP5.2, 其余的一半用户在使用 PHP5.3。因为 PHP 那“集百家之长”的蛋疼语法,加上社区氛围不好,很多人对新版本
对于一个php开发刚刚入门的程序员来说,经常会碰到学习方向的疑惑。如果没有人知道,php新手很难明确自己应该从哪里开始学习。今天w3cschool就给亲爱的小伙伴们分析php语言学习的方向性问题。首先,html是你必须要学习的,因为它是前端
PHP能做什么?可以用来做网站、游戏、APP、小程序。。。PHP能做任何事,但其最主要的应用,就是与数据库交互来开发web应用(web应用也就是网站啦)作为一名先进的PHPer,迫切的想提高自己的编码水平,首先,面对PHP众多杂乱无章的各种
PHP开发运用十分广泛,众所周知,PHP编程语言与其他编程语言相比会简单很多,因此越来越多的人加入了PHP学习的队伍,但是对于软件技术方面,没有任何基础,很多人都害怕学不会,都存在这样的疑问:学习PHP开发技术难不难?零基础参加PHP培训能
如今参加PHP培训学习的小伙伴越来越多,但是每一位都能学到专业实用的技能成为高薪的PHP开发工程师吗?当然不是,学习PHP开发并不是那么容易的,当然也没有想象中那么困难,想要成为专业的PHP开发工程师一定要选择专业靠谱的PHP培训机构学习。
由于现在的PHP开发工程师在企业中有着很重要的地位,因此PHP开发工程师的薪资和就业环境都是非常不错的,所以现在有越来越多的人选择参加PHP培训机构学习PHP开发技术,那么参加PHP培训学习的费用高吗?参加扣丁学堂PHP培训学习贵吗?在互联
学习PHP的过程分为4个阶段,一步步前行,为每个阶段 设定一个学习目标,并安排好学习计划,达到目标后就可以开启下一阶段的学习。已学完,有需要看文章最后<阶段一:入门>这是刚刚接触PHP时的入门阶段,先要了解PHP的开发能力,并多接触一些用P
PHP编程语言是目前编程语言中最热门的编程之一,PHP应用领域最多的是WEB开发,PHP和mysql结合可以做出完美的网站,目前大多WEB网站都会选择PHP开发,开源成本低,高效质量好。学习PHP编程其实比较容易,如果你学过HTML、CSS
在中国互联网行业膨胀的12-16年,PHP语言凭借自身易上手,开发周期短的优势,深受各中小企业的喜爱。小编也很荣幸在2009年底进入这一行业,为自己谋生分得一杯羹。但是PHP又先天有它的局限性,导致客户很多需求无法得到满足。大家都知道,P
ZWebPHP 框架设计目的:标准化、体验统一、简单可靠、易于扩展后端PHP框架基于PHP、smarty 构建。基于composer自动加载。完全基于API接口设计,API文档自动生成。权限包含菜单访问权限和API接口访问权限。工具类、数据
这也许,不,就是PHP世界中最好的日志组件—— Monolog所有的 PHPer,请站在巨人的肩膀上。随着 Composer 的普及,PHP 组件化开发思想越来越深入人心,我们没有必要重新自己打造轮子,只要确定需求和目标,设计好软件的架构,
PHP的功能越来越强大,里面有着非常丰富的内置函数。资深的PHP程序员对它们可能都很熟悉,但很多的PHP学习者,仍然对一些非常有用的函数不太熟悉。这篇文章里,我们就列举10个你或许不了解但实用的PHP函数,供大家参考和学习。1. php_c