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

干货 | PHP就该这么学!的更多相关文章

  1. 学Android开发 这19个开发工具助你顺风顺水

    学Android开发 这19个开发工具助你顺风顺水 要想快速开发一个Android应用,通常会用到很多工具,巧妙利用这些工具,能让我们的开发工作事半功倍,节省大量时间,下面大连Android开发培训小 ...

  2. DIY一个高大上带提醒的计时器,简单实用,你还在等什么

    小编心语:锵锵锵!小编我又来了!昨天发了一篇比较实用的<Python聊天室>,鉴于反响还不错,SO ,小编也想给大家多分享点有用的干货,让大家边学边用.好了,闲话不多说,今天要给各位看官们 ...

  3. 两千行PHP学习笔记

    亲们,如约而至的PHP笔记来啦~绝对干货! 以下为我以前学PHP时做的笔记,时不时的也会添加一些基础知识点进去,有时还翻出来查查. MySQL笔记:一千行MySQL学习笔记http://www.cnb ...

  4. MySQL查询(进阶)(每个标点都是重点)

    MySQL 是工作中很普遍的需要用到的,所以必须掌握,而 之前我们一直说的都是怎么存. 你只会存不会取有个屁用.所以希望大家在如何查询读取数据这方面多下点功夫. 这篇和上一篇都是干货,我也是第一次学. ...

  5. PHP最全笔记(一)(值得收藏,不时翻看一下)

    PHP笔记来啦~绝对干货! 以下为我以前学PHP时做的笔记,时不时的也会添加一些基础知识点进去,有时还翻出来查查. //语法错误(syntax error)在语法分析阶段,源代码并未被执行,故不会有任 ...

  6. .NET开源作业调度框架(Quartz.NET和FluentScheduler)实战项目演练

    一.课程介绍 明人不说暗话,跟着阿笨一起玩NET .本次分享课程属于<C#高级编程实战技能开发宝典课程系列>中的一部分,阿笨后续会计划将实际项目中的一些比较实用的关于C#高级编程的技巧分享 ...

  7. Essay Fail?可能是引用出了问题

    新学期伊始,又有不少成功与雅思分手的学生们海外入学.本以为可以稍微喘口气,却发现漫天的essay接踵而至.因此,Hotessay小编为新瓜蛋子们特地准备了一期essay写作的干货.还不赶紧学起来,用到 ...

  8. 【转】web前端到底怎么学?干货资料!

    一般据我经验,在喜欢并且决定和她恋爱之前,我都会做一下充分准备和调查,有必要了解和研究清楚 ‘她’ 的几个特性和习惯 web前端的基本工作职责 和基础技能(要清楚) web前端的分类和门派(简要概述, ...

  9. web前端入坑第二篇:web前端到底怎么学?干货资料! 【转】

    http://blog.csdn.net/xllily_11/article/details/52145172 版权声明:本文为博主[小北]原创文章,如要转载请评论回复.个人前端公众号:前端你别闹,J ...

随机推荐

  1. DLC 基本逻辑运算

    逻辑代数:分析设计数字电路的数学基础是逻辑代数 变量的取值只能是 0 1 逻辑代数中只有三种基本逻辑运算,即 与 或 非 与逻辑运算: 只有决定一件事情的全部条件都具备时,这事件才成立.这样的因果关系 ...

  2. C 语言 判断

    if if (im < 0) { im = 60 + im; ih--; } 如果 (im < 0) 小于零,那么 做{ } 中内容 如果 (im < 0) 不小于零,那么 { }中 ...

  3. 29.python环境搭建

    新的笔记本上搭建的python运行环境:1.首先现在下载python版本,我这里拿的是之前用的3.5老版本 2.双击安装(勾选 add Python3.5 to path) 3.检测是否安装成功 4. ...

  4. 关于 someone could be eavesdropping on you right now (man-in-the-middle attack) ssh的解决办法

    记录工作中遇到的问题 someone could be eavesdropping on you right now (man-in-the-middle attack) ssh 由于远程机器或者重组 ...

  5. [python]关于函数传入参数

    在传入参数时有两个特殊参数,*args,**kwargs,功能如下: def foo(*args, **kwargs): print 'args = ', args print 'kwargs = ' ...

  6. python_13 面向对象

    面向对象 类:把一类事物的相同特征和动作整合到一起就是类,类是一个抽象的概念 对象:就是基于类出而创建的一个具体的事物或实例(具体存在),其特征和动作整合到一起 面向对象设计:将一类具体事物的数据和动 ...

  7. laravel5.6中jquery+ajax分页

    public function shows(Request $request){ $p=$request->get("page"); $page=empty($p)?:$p; ...

  8. mysql 函数获取子节点

    DELIMITER $$ USE `topsale`$$ DROP FUNCTION IF EXISTS `getShopIdByUserId`$$ CREATE DEFINER=`root`@`%` ...

  9. Ubuntu 18.04 安装部署Net Core、Nginx全过程

    Ubuntu 18.04 安装部署Net Core.Nginx全过程 环境配置 Ubuntu 18.04 ,Nginx,.Net Core 2.1, Let's Encrypt 更新系统 sudo a ...

  10. CSS 图像高级 径向渐变

    径向渐变 径向渐变使用 radial-gradient 函数语法. 这个语法和线性渐变很类似, 可以指定渐变结束时的形状 以及它的大小. 默认来说,结束形状是一个椭圆形并且和容器的大小比例保持一致. ...