《细说PHP》 第四版 样章 第二章 PHP的应用与发展 5
2.5 如何学习PHP
PHP以其简单易学的特点,以及敏捷开发的优势,从一个几乎不被人知的开源项目,慢慢成长为技术人员首选的动态Web设计工具,与其他语言相比,PHP表现得更好、更快、更简单易学。尽管如此,我们在面对一项自己不熟悉的新技术时,仍然会感到无所适从,不知道从何处入手,似乎总是感觉摸不出一条清晰的脉络来。另外,最大的障碍莫过于学习的过程枯燥乏味,从而失去学习兴趣。不过,如果你能掌握一种适合你的学习方法,就可以事半功倍。根据笔者多年的PHP教学经验,和众多人才培养的成功案例,列出的学习方法或多或少地有一定的借鉴作用。当然再科学的学习方法,也只是让你少走弯路,而不能一夜精通,还是需要持久地修炼!
2.5.1 确定学习的目标
是什么让你选择学习PHP呢? 是爱好、是为了找工作、还是工作中的开发需要?既然选择学习PHP就一定要有坚定的信念。不能一时兴起学了一阵儿,听别人说某某语言有多么得好,马上切换,或是多门语言的学习同时进行。只有专心在一门课上下苦功,才能成为“专家”,持之以恒才能产生兴趣,毕竟兴趣才是最好的老师!
2.5.2 PHP学习线路图
刚开始学习PHP时,多数新手都会有一些迷茫,不知道从哪里开始学起,不了解学习的顺序,找不到学习的重点。例如,有新手听说学习PHP需要先搭建好运行环境,就按网上的资料搭建。网上好多这方面的资料,几乎都是真实项目上线使用的专业环境,所提供的都是Linux下源代码包安装方式,相当复杂,成手如果按项目功能定制安装都有可能要花费一两天的时间,新手有的需要花费一两个月时间才能了解个大概,这就是为什么有好多新手从一开始就选择了放弃。如果有人教你一种学习用的集成安装环境,可能你只需要5分钟就可以搞定。还有新手学了好久,就是不知道如何写项目,反复学习基础部分,就是停滞不前。也有的新手找不到重点,学习了大量的内容,结果实际用到的并不多,浪费好多时间。所以新手开始学习,需要有人给你指引,找到正确的方向才能大步前行。如图2-7所示,是笔者建议的PHP新手学习线路图。
图2-7 PHP新手学习线路图
按PHP学习线路图2-7中的指引, 可以将学习PHP的过程分为4个阶段,为每个阶段设定一个学习目标,并安排好学习计划, 达到目标后就可以开启下一阶段的学习。
Ø 阶段一:入门
这是刚接触PHP时的入门阶段,先要了解PHP的开发能力,并多接触一些用PHP开发过的开源项目,网上有很多开源的PHP项目可以下载,先学习一下简单的功能操作即可,主要是能产生对PHP的学习兴趣,从中了解PHP的开发需求和PHP的开发特点等。前面我们介绍了Web开发所需的构件,所以只孤立地学习PHP肯定是不行的,先学PHP也不行。如果刚开始接触Web开发就直接学习PHP会力不从心,因为PHP是服务器端脚本,至少要在PHP的运行环境去解析它。另外,PHP是嵌入到HTML中的脚本语言,还要了解一些常见的HTML标记等。在开始学习PHP之前先做一点准备是非常有必要的。
Ø 阶段二:打基础
这个阶段是学习的重点,但方法很重要,像PHP的基本语法和语言结构(流程控制、函数、字符串等)这部分内容能学多细就学多细,每个知识点都会在开发中使用到。而像数组、对象、文件处理、图像处理、MySQL数据库的操作、PHP操作数据库等内容,先学习一些常用的部分,掌握一些基本的应用,这样可以大大提高学习的进度。大多数新人在这个阶段的学习中都会出现两个常见的问题:第一,可能当天学习的内容,下次在学习新内容时,上次学的忘得差不多了,总是记不住。当然,这个大可不必担心,不要停下来,一定要继续往下学习,因为基础的语法都是后面知识中会用到的技术,用多了自然就记住了。而像高级的部分也不用担心记不住,都是类库或函数库,只要记住系统已经提供了哪些功能就好,使用时通过查询手册即可,能记住常用的当然更好。第二,就是书上讲的内容,能看懂也都能理解,就是自己一动手时,不知从何下手,没有思路。所以说对这个阶段的知识点有所了解以后,一定要想尽办法做出一个小项目(例如,模拟写个小型商城、论坛或聊天室等),暂时不用去管安全、优化及代码质量,只要能实现功能就行。这个项目的目的就是将基础部分的零散知识点贯穿在一起,在实际项目中去应用实践,能更好地对其理解和掌握。
Ø 阶段三:加强
有了阶段二的项目开发的练习后,积累了一些开发思路,需要再回过头深度学习每部分的知识点,如数组、对象、正则表达式、数据库操作、数据结构和算法等,这些内容是PHP开发中最常用的技术,这个阶段的学习可以更全面、更透彻,更容易掌握。当然还要学习一些新的内容,像模板引擎和PHP框架,然后再做一个项目。这个阶段的项目就不能像阶段二时的项目,只是实现基本功能就行了,不仅要求代码质量要好,业务逻辑要清晰,项目的结构也要基于目前最流利的开发模式,使用框架和模板引擎,并采用面向对象的思想和MVC模式的设计要求,还要学习项目的开发流程和规范,尽量让这个项目达到真实上线的项目标准。
Ø 阶段四:提高
这个阶段建议在工作中去学习, 因为这个阶段的内容没有统一的标准,需要根据实际项目去设计解决方案。当然多收集和学习一些这方面的理论,或模拟场景做一些有关的实验是很有必要的。以上四个阶段,看似简单,却也需要我们全身心投入,持之以恒才行。
2.5.3 坚持动手实验
打过篮球的朋友都知道投篮理论可以掌握的很快,但要提高实际的命中率,就需要反复练习了。学编程也是一样的,能看懂的代码,可不一定能写出来,多动手练习是非常有必要的,可能刚接触时,写了几行代码就会出现N个错误,出现的错误就是你没有掌握的技术,解决掉的问题就是你学到的知识,当错误出现的越来越少时,你编写代码的能力也就越来越熟练。当然,为了能更快地解决代码错误,初期可以写几行代码就运行一下,这样方便定位查找Bug的位置。另外,编写代码是对理论进行实践的最好方法,你认为比较迷茫的技术,都可以通过实验解释通过。还有,在练习时一定要边练习边为代码加上注释或记录学习笔记进行总结和分析。
作为编程过来人,笔者刚开始学习编程时同样没有思路,至少也是照猫画虎写上万行代码,才慢慢出现思路的。多动手跟着书上的例子或配套的教学视频开始练习,当然最好加一些自己的功能,按自己的思路敲上一些代码,收获会大得多。提醒一句,要理解代码思路之后再跟着敲,背着敲,千万不要左边摆着别人的程序,右边自己一个一个子母地照着写。
2.5.4 Bug解决之道
不管是新手学习,还是成手程序员,写程序就会遇到Bug。那么,自学时遇到Bug之后,环境配不通,程序调不出来,运行不正常,遇见这些恼人的问题时,该怎么办呢?首先我要恭喜你,遇见问题,意味着你又有长经验的机会了,每解决了一个问题,你的PHP经验值就应该上升几百点,问题遇到的越多,知识提升的就越快。
但是总是解决不了Bug也是很恼人的,怎么办呢? 笔者的建议是当你遇到一个问题时:首先要仔细地观察错误的现象。有不少新人的手非常快,访问页面报了一大堆的错误,扫了一眼之后就开始盯着代码一行一行地找,看清什么错误了吗?没有!还有出现Bug马上网上求救,自己都没看一下,这都是典型的不上心的方法!请记住,学习编程并不是一件很容易的事情,自己首先要重视,要用心才可以。别人帮你解决的问题可不是你的提高,最少也要自己尝试着去解决,真的没有思路了,可就别浪费时间了,再花多少时间也解决不了,这时就该想别的办法了。在开发过程中,仔细观察出错信息,或者运行不正常的信息,是你要做的第一件事。如果错误信息读懂了,就要仔细思考问题会出在哪个环节了;如果没读懂,又要怎么办呢? 读了个大概,有些思路但是不太能确定,也要如何处理呢?
Ø 要仔细思考问题会出在哪些环节上
程序是一系列语句完成后产生的结果。当你读懂了一个问题之后,要好好地思考这个问题可能会在哪些环节上出错。例如,客户端产生数据→按“提交”按钮→发送到服务器→服务器接收到后保存到数据库。这几个环节都有可能会出错:有可能客户端根本就没产生数据、提交按钮按下去后根本就没发出去、发出去的不是你产生的东西、根本就没连接网络、发送出去服务器没有接收到,或者接收到的信息没保存到数据库等。仔细地分析程序的环节和这些环节可能产生的问题,你的经验值自然会大幅度提升。在网页A输入了一个人的名字,提交到B,首先存储到数据库,然后再读出来,发现乱码!怎么办?当然是分析环节:客户输入→HTTP发送→B接收→存储到数据库→读出→展现到网页。每个环节都可能出问题,怎么才能知道哪里出的问题?继续往下读。
Ø 如何定位错误
写代码时常见的Bug有两大类:一类是语法错误,例如没写结束的分号,访问时页面中就会提示哪里出错,打印出错误报告,只要认真读完错误报告,这样的问题很容易找到,也很好解决。另一类是编写的逻辑错误,这是因为设计缺陷或是开发思路混乱造成的,要定位这样的错误会麻烦一些,分析清楚有哪些环节之后,通常有三种方法找到错误位置:第一种是输出调试法,通过在多个可疑的位置打印输出不同的字符串,通过观察输出的结果,并结合输出信息的位置周围的代码来确认错误的位置。第二种是注释调试法,先将所有代码注释掉,再从上到下一点一点去掉注释,去掉一次注释运行一下,观察运行的结果,如果有不正常的结果出现,也就是定位到了错误的位置。第三种是删除调试法,先将代码备份,然后删掉一部分调试一部分,也就是去掉一部分功能来做简化,然后调试剩下的功能。如果还查不出来,恭喜你,你遇到的错误是值得认真对待的错误,是会影响你学习生涯的错误,就使用搜索引擎吧。 也可以在专业的BBS中详细列出问题,或加入一些QQ群寻求指导。
2.5.5 看教学视频,让学习变得简单
跟着教学视频学习是很好的学习方式,既有详细的理论讲解又有代码分析,看书和配套视频结合学习可以达到最佳的效果。目前,网上可以免费学习的技术视频越来越多,像兄弟连云课堂(yun.itxdl.cn),不仅视频种类多、视频新、讲解全面详细,而且又会根据企业实际的技术应用,不断更新,不仅可以记录学习笔记,还有专业老师在线指导答疑,也可以和同学互动。 找到比较适合你的全套视频,保存在硬盘里即可。
2.5.6 优秀的Web程序员是怎样练成的
学习软件开发“思维逻辑”是核心,“记忆”只是辅助。每个行业都有新手和成手之分,软件开发也是一样,分为普通程序员和高级软件工程师等不同级别的职位。从初级程序员成长为高手并不是一步到位的,而需要通过不间段的努力逐渐成长起来。例如,在工作中不断积累经验,掌握复杂网站的架构设计,并具有解决问题的能力,还要多研发产品,并能挑战高难度的项目。除了要有强烈的好奇心和学习精神以外,笔者还总结以下几点提供给刚入行的新手参考。
1. 克服惯性
万事开头难,克服惯性是学习新技术的第一步。有很多的小技巧可以调动我们的积极性,帮助我们克服惯性。对于笔者来说,微习惯是一个很好用的小技巧。与其被手头的任务吓到,不如将任务细分为一个个具体的微任务,然后挑选其中的一个开始做起。通过完成一个个的微任务,你会发现自己克服了惯性,任务不再显得难以完成。关键就是将大块任务细分为微任务。
2.具备扎实的技术功底
PHP是众多计算机开发语言中最容易入门并上手最快的开发语言。但如果不了解数据结构、离散数学、编译原理、计算机网络、结合多种语言的编程特点等这些计算机科学的基础知识,很难写出高水准的程序。当你发现写到一定程度很难再提高的时候,就应该想想是不是要回过头来学学这些最基本的理论。因此,多读一些计算机基础理论方面的书籍是非常有必要的。
3.遵循良好的编码规范
高质量的代码都具有统一的编码规范,要养成良好的编码习惯,代码的缩排编排、变量的命名规则要始终保持一致。因为在一致的环境下,团队协作中会有更高的效率,团队的成员可以减少犯错的机会。程序员还可以方便地了解其他人的代码,弄清程序的状况,就和看自己的代码一样。另外,也可以防止刚接触PHP的新人自创一套风格并养成终生的习惯,一次次地犯同样的错误。
4.遇到问题要解决不要逃避
学习过程中遇到比较难理解的重要章节不要跳过,更不能放弃,要多花一些时间和精力在这些知识点上,将其攻破,这样才能不断地提高。解决过的问题再次遇到时将不再是你的障碍。
5.扩充自己的想象力
程序员不要局限于固定的思考方式,遇到问题时要多想几种解决问题的方案,可以试试别人从没想过的方法。丰富的想象力建立在丰富的知识的基础上,除计算机之外,多涉及其他的学科,比如天文、物理、数学等。
6.对新技术的渴求
我们可以越来越方便地获得大量学习资源。这些资源的传播载体由最初的教室变成了博客、技术论坛等。
7.挖掘设计模式,提高代码质量
动手将一个新的模块开发出来后,不要认为自己编写的代码就是完美的,也不要草率地将别人的代码拿过来就直接使用,更不要在开发过程中多次遇到相同的功能,将同一段代码直接粘贴反复使用。提高自己的编码能力一定要多参考和总结别人的设计模式,还要不断地改进和升级才能提高自己编写代码的质量,也能从中学到新的技术。
8.多与高手交流
尽量多认识一些大型互联网公司的程序高手,多了解一些大型网站的解决方案。要多上网,看看别人对同一问题的看法,会给你很大的启发。也要经常参加一些互联网技术大会,了解一些新技术和行业的发展,拓展自己的眼界。它可以是任何你有激情去学,并且想深入学习的一些东西。这种原始的学习欲望非常重要,这种欲望可以在你的学习低潮期给你提供动力。你想学的或许是一门新的编程语言、应用框架或者是新的工具,一旦你确定了想要的是什么,就立刻去收集相应的优秀群体所做的一些优质的工作成果。
9.韧性和毅力
程序高手们并不是什么天才,而是在无数个日夜中磨炼出来的,成功能给我们带来无比的喜悦,但程序却是无比的枯燥乏味。做程序员,停滞不前就是落后,要不断地学习扩展新知识,就像软件版本升级一样,也要不断地更新自己的技术。
10.写博客
在技术领域,博客是最简单易得的表达载体。当你准备落笔的时候,你会强迫自己整理思路,并且对积累下来的零散的知识片段进行结构梳理。说不定,通过互联网的分享,你的经历和分享会给别人的成长带来帮助。写博客能够提升你的个人沟通能力,这与你学到的技术同样重要。
11.考虑接单
许多程序员正不断地寻找新的项目和解决不同的问题,以此来增加经验。然而,很少有一个单一的环境能够提供这样的条件。如果基于遗留系统代码(维护原有系统),架构方面没有多大的想象空间。因此,许多程序员觉得需要变换工作,到不同的环境去获取新一阶段的学习。然而,“跳槽”只不过是获取丰富经验的途径之一,笔者提议另一个选择——接单。
2.6 小结
本章必须掌握的知识点
Ø PHP是什么,可以用来开发哪些类型的应用。
Ø PHP的开发优势。
Ø 如何学习PHP。
本章需要了解的内容
Ø PHP的诞生与发展。
《细说PHP》 第四版 样章 第二章 PHP的应用与发展 5的更多相关文章
- 《细说PHP》第四版 样章 第二章 PHP的应用与发展 1
<细说PHP>第四版 样章 第二章 PHP的应用与发展 1 学习任何编程语言之前,先了解一下它的应用与发展是很有必要的.从Web开发的历史看来,PHP.Python和Ruby几乎是同时出现 ...
- 《C++Primer》第五版习题答案--第二章【学习笔记】
C++Primer第五版习题解答---第二章 ps:答案是个人在学习过程中书写,可能存在错漏之处,仅作参考. 作者:cosefy Date: 2020/1/9 第二章:变量和基本类型 练习2.1: 类 ...
- Linux第一章第二章学习笔记
第一章 Linux内核简介 1.1 Unix的历史 它是现存操作系统中最强大最优秀的系统. 设计简洁,在发布时提供原代码. 所有东西都被当做文件对待. Unix的内核和其他相关软件是用C语言编写而成的 ...
- Windows程序设计(第五版)学习:第二章 Unicode简介
第二章 Unicode简介 1,Windows通过双字节技术DBCS解决这个问题,代码页定义不同的字符集,称为ANSI字符集,比如日文为CP932,韩文为CP949,繁体中文为CP950,简体中文为C ...
- c#高级编程第七版 学习笔记 第二章 核心c#
第二章 核心C# 本章内容: 声明变量 变量的初始化和作用域 C#的预定义数据类型 在c#程序中使用条件语句.循环和跳转语句执行流 枚举 名称空间 Main()方法 基本的命令行c#编译器选项 使用S ...
- CSS3秘笈复习:第一章&第二章&第三章
第一章: 1.<cite>标签不仅可以将网页设置为斜体,还能给标题做上标记,使它便于被搜索引擎搜索到. 第二章: 1.import指令链接样式表: CSS本身有一种添加外部样式的方法:@i ...
- Practical Vim 第一章 & 第二章
第一章:Vim 解决问题的方式 前言 本质上讲,我们的工作是重复性的.凡是可以简化重复性操作的方式,都会成倍地节省我们的时间. Vim 对重复性操作进行了优化.它之所以能高效地重复,是因为它会记录我们 ...
- Linux内核设计与实现 第一章 第二章
第一章 Linux内核简介 Unix特点: (1) Unix很简洁,仅仅提供几个几百个系统调用并且有一个非常明确的设计目的 (2) 在Unix中,所有的东西都被当作文件对待,通过一套相 ...
- 《细说PHP》 第四版 样章 第二章 PHP的应用与发展 4
2.4 PHP的发展 最初创建时,PHP是一个简单的用Perl语言编写的程序,只是为了统计自己的网站有多少访问者.后来又用C语言重新编写,多年来,PHP经过无数开源贡献者的不断迭代,历经数个版本,已 ...
随机推荐
- mysql从5.6升级到5.7后出现 Expression #1 of ORDER BY clause is not in SELECT list,this is incompatible with DISTINCT
[问题]mysql从5.6升级到5.7后出现:插入数据和修改数据时出错Caused by: com.ibatis.common.jdbc.exception.NestedSQLException: - ...
- CentOS自动化安装LAMP脚本
#!/bin/bash #-- #blog:lizhenliang.blog.51cto.com ########## function ########## depend_pkg () { yum ...
- pymysql用法,Python连接MySQL数据库
Pymysql模块是专门用来操作mysql数据库的模块,使用前需要安装,安装指令:pip install pymysql 操作流程: 第一步:import pymysql 第二步:获取数据库的连接 , ...
- Python连载54-FTP编程
一.FTP工作流程 1.客户端链接远程主机上的FTP服务器 2.客户端输入用户名和密码(或者“anonymous”和电子邮件地址) 3.客户端和服务器进行各种文件传输和信息查询操作 4.客户端从远程F ...
- E-factory
E-factory为生成XML和HTML提供了一种简单而紧凑的语法 # coding:utf-8 from lxml.builder import E def CLASS(*args): # clas ...
- Selenium(三):操控元素的基本方法
1. 操控元素的基本方法 选择到元素之后,我们的代码会返回元素对应的 WebElement对象,通过这个对象,我们就可以操控元素了. 操控元素通常包括: 点击元素 在元素中输入字符串,通常是对输入框这 ...
- ElementUI项目中怎样引用Jquery
场景 使用ElementUI的快速开始的项目模板搭建Element项目后, 要在vue页面中使用jquery的语法. 这里直接使用$.ajax会提示$找不到. 注: 博客:https://blog.c ...
- Implement Property Value Validation in the Application Model 在应用程序模型中实现属性值验证
In this lesson, you will learn how to check whether or not a property value satisfies a particular r ...
- 怎么将CAD转PNG格式?这两种方法值得收藏
在从事相关CAD工作的小伙伴们都知道,CAD中不光需要绘制各种各样的图纸,还需要根据工作的需要来进行图纸格式的转换工作.那有的时候就需要将CAD转换成PNG格式的图片进行使用.那怎么将CAD转PNG格 ...
- VUE项目中文件上传兼容IE9
项目使用VUE编写,UI是ElementUI,但是Element的Upload组件是不兼容IE9的.因为IE9中无法使用FormData. 查找资料基本有两种解决方法:1.引入JQuery和jQuer ...