前段时间和大家一起分享了一篇关于学习方法内容《大牛与搬运工的差距——学习方法的力量》。我们将学习过程分成八步,并借鉴了敏捷开发的迭代思想,以达到自我迭代学习的效果。行胜于言,理论结合实践才是王道,所以本文我将基于前面的学习方法,分享我是如何学习PHP的。

为什么学习PHP?

最初接触PHP时,是源于自己想学习网站开发,由于是前端转后端,PHP完全是自学的,不过好在之前学过C语言,学起PHP来倒并未觉得吃力。使用PHP我们可以开发出各种优秀的web应用程序。

我不敢说PHP是最好的语言(避免引战),但PHP凭借其易学、快捷、高效等特性,至少在WEB应用开发领域里一直都是热门技术,以至于现在市面上各种IT培训机构里都不乏PHP的身影。

接下来,我们就马上开启PHP的学习之旅~

1.确立目标

我们都知道做事情要定个目标,看似简单,但实际大部分人做事无成果的原因恰恰就是这一步没做好。

建议大家在确立目标时,借鉴”SMART”原则——Specific(具体的), Measurable(可衡量的),Achievable(可达到的),Realistic(切合实际的),and Timed(合时宜的)。不要给自己制定诸如“我要精通PHP”、“我要成为技术大牛,月薪XX万”等这种不着边的目标。

我在初学PHP时,给自己定的目标很明确:

学习PHP的基本知识,并通过开发一款CMS建站系统来验证学习效果。

2.拆分任务

我们通过逆向分解,将目标拆分成具体的可执行任务。这个过程其实就是将目标细分整理成具体的小目标或问题,然后将其关联到一个个可执行的任务,目的是完成目标或解决问题。

完成我的目标,需要具体学习哪些知识,完成哪些事项呢?首先,学习PHP之前基本的HTML,CSS,JS等前端基础还是有必要的。然后学习PHP的基本语法,文件、图片、错误等处理机制,还有与mysql数据库的一些操作,以及会话控制、协议、MVC设计模式等。

梳理之后,目标就会被分解成一个个需要完成的具体任务。这里我借助“然之协同”里的任务管理工具,将需要做的任务都罗列出来,方便后面执行跟踪。

3.搜集知识资源

学习过程中必然少不了各种学习资料,在搜集知识资源时主要侧重三方面:书籍、官方文档和网络技术文章。

首先我找的是PHP的官方手册,这是必备学习工具,内容既权威又全面。其次书籍到现在买的较多,对于初学者,不建议“书海战术”,个人觉得“手册+一本书+一台电脑”足矣。其实很多入门书籍都是基于PHP手册编写的,千篇一律,所以建议初学者学习PHP时要研读手册,每段实例代码都上手操作并理解透彻。这里为初学者推荐几本个人觉的还不错的书以供参考:

《PHP编程(第三版)》

《PHP和MySQL Web开发(原书第4版)》

《深入PHP:面向对象、模式与实践(第3版)》

除此之外,平时也会在CSDN、掘金、博客园等IT技术门户里查阅一些php技术相关的“干货”。

对于知识资源的搜集,还是要提醒大家注意一点,切勿做“收藏控”。很多朋友对于书籍、各种教程、网络文章等资源,购买了下载了收藏了,然后,就没有然后了,最终真的沦落为“收藏品”。而我们真正要做的是要把知识“收藏”并沉淀到我们脑子里。

4.分配自身资源

其实就是时间管理。我们的时间、精力等各方面资源有限,所有的知识不可能平均分配有限资源。对于我们搜集的知识资源,要分清主次,然后使用不同的时间管理策略进行学习。

前面梳理了一些需要执行的学习任务,并整理了大量的学习资源,这一步要做的就是将这些任务、资源结合自身的实际情况,合理规划分配时间精力。每个人的情况不同,所以这一步因人而异,这里我还是借助“然之协同”的待办工具,做一个具体可执行性的学习计划。

5.勤学

学习效率与效果取决于执行力。之前文章介绍过学习中的一些方法论,这里我简要地介绍一下学习PHP时的大体过程。

a.快速泛读

如果你有一定语言基础,比如我之前学过C和前端技术,再学起PHP来上手就相对快一些。基本的语法知识可以先快速过一遍,像数组、字符串、图片等处理函数、对象接口、正则匹配等可以后面慢慢积累、深入。

b.深入解读

由浅入深地沉淀每个知识点。正如前面所讲,建议先从PHP手册入手,将每个知识点理解清楚,一定要将每一段实例代码亲手敲一遍(手懒是永远都学不会任何一门语言的)。一遍不懂就多敲几遍,不仅要明白怎么用,还要理解为什么这样设计,否则对于基本知识浮于表面,只会为后面学习挖下坑。

c.问题攻读

在学习过程中你必然会遇到各种问题,先查阅资料或谷歌来解决。如果遇到以现有知识层面难以解决的问题,可以先记下,或许后面会柳暗花明或找他人帮助。

这一步学习的正确姿势其实就是“做任务,刷副本,打怪升级,加技能点”

6.建立知识体系

不要以为这一步可有可无,建立知识体系有助于帮我们理清各个概念和知识点之间的关联,逐渐形成系统的知识体系。在web开发里,我们知道任何一门技术都不是孤立的,你要学习很多知识,所以你在学习PHP时会发现,从PHP这个点会延伸出多条知识链,从而系统地形成一个知识体系。

这里我借助xmind脑图工具,整理了一下PHP的基本的知识体系。(网上有列的更详细全面的版本)

7.好问

基于前面问题攻读后还有未解决的问题,就要求教他人获取帮助了。提问也是一门艺术,这仍是一个学习交流的过程,而不是让别人去解决原本你该解决的问题。

向别人提问求助时,要讲问题的来龙去脉讲清楚,如怎么引起的,自己尝试做了哪些操作等等。这些年在众多技术交流社群和平台,见过很多奇葩的提问方式,这里列几个,与大家共勉。

a.直抛结果型

直接甩出一张截图或错误提醒,并附上一句:怎么解决?怎么破?跪求科普……

b.不懂就问型

不动脑,不动手,碰到问题就问。这种选手即便帮他解决了问题,他也学不到东西。

c.懒人型

与前者类似,但更滑稽可笑,看到这种问题我个人向来直接无视。比如“这个问题是这样操作么?”,“我这样整对不对?”,“是点这里么?”……

8.分享复述

其实即便不提“费曼技巧”,我们很多人在学习时都会用到分享复述这个方法。无论是演讲、录视频、还是像我此刻这样写文章,其实都是在向他人阐述自己对知识的理解和观点,然后大家会给自己一些反馈,比如你的错误、问题,接着自己再回归到知识里完善不缺“漏洞”,如此迭代学习。

开源项目推荐

这里分享下我们团队基于PHP+Mysql开发的项目,供大家学习练习。

禅道项目管理软件

蝉知企业门户系统

然之协同办公系统

zentaoPHP框架


小结

我将自己学习PHP的过程分为八步:

1.确立目标:没有目标的学习是不会有结果和效果的。

2.拆分任务:将目标分解成具体可执行的学习任务。

3.搜集知识资源:查阅官方文档、购买书籍、搜集网络干货文章。

4.分配自身资源:合理分配时间精力,制定学习计划。

5.勤学:强大的执行力是学习的根本保障。

6.建立知识体系:将学习的知识在脑海里建立系统模型。

7.好问:避免孤立学习,但好问也要会问。

8.分享复述:检验学习成果,提高学习效果的最好方法。


作者:GavinHsueh,QQ/微信:753391279,专注项目管理、办公自动化、网站建设等web应用开发领域。