Heim >Backend-Entwicklung >PHP-Tutorial >新手应该如何学习 PHP 语言?

新手应该如何学习 PHP 语言?

WBOY
WBOYOriginal
2016-06-06 16:41:481276Durchsuche

接触互联网产品的时间越长,才发现学习一门语言的重要性。在此前了解了一下程序语言,发现PHP是比较适合新手学习的,所以向各位大神提问:

1、新手应该如何去学习PHP语言?
2、想要开发一款CMS程序需要多久的学习?
3、有没有适合新手阅读的PHP方面书籍推荐?

我的一些介绍:
之前没有接触过任何一种程序语言,只对HTML、CSS有了解。

回复内容:

文章开头我想问一句话:PHP是做什么的?


因为这是面试中会问到的一个问题,虽然它看起来很简单。

回答做网站的,也就是个简单建站的水平。

回答做网站后端开发的,对PHP有了一定的认识。

回答做后端处理的,有了更深层次的认识。


学习一样技能,你得先清楚这项技能是到底做什么的,说到这里,我想大家都会简单的说是做网站的,因为PHP在WEB领域应用最为广泛,大多数网站都是用PHP做的。准确的说PHP是做网站的后端开发的,其实我这样说还不算正确,PHP只是做后端开发的,但不只是网站而已。就像现在比较火的APP开发也可以用PHP做后端处理。


PHP相对于其他语言,比较简单,相对好上手,比较适合零基础的人学习,但是就像我上面说的那样,PHP只完成了一个网站或者系统的一部分。


一个运行的网站或者软件系统可以分为前端页面,后端程序,数据库,linux。而处理后端的PHP仅仅是只占了四分之一,PHP本身的东西其实并不多,真正多的东西都在PHP之外,所以单纯的掌握PHP并不足已做出什么产品,可能连工作都找不到。


关于学习PHP,我想讲讲我的心路历程:


前端:

但凡是一个网站都必须得让人能看得见,使用得起来。任何一个网站可以没有数据库,可以没有后端程序,但是必须得有前端页面,而这也是最早期的网站形态—一 一个只能展示文字和图片等信息的静态页面。


掌握静态网页的制作技术是学习开发网站的先决条件。这里面的学习包括 HTML,css,javascript,它们可以直接使用浏览器运行。


HTML负责网页的结构,用它来规定网页排版中哪部分是文字,哪部分可以放图片,音频文件,视频文件放在网页中什么位置显示等。


CSS可以把这些文字,图片,视频等信息拥有一定的合理好看的样式,可以定义文字的大小,颜色,图片的大小等等。


javascript可以让网页与人产生交互,就像你登录网站,点击登录按钮就会跳转,把鼠标放到菜单,菜单就会自动展示下拉,逛淘宝时,把鼠标放在产品图片上,图片就会放大等等。


我的学习技巧和心得:

我算是零基础学习开发的吧,连大学都没上,没系统的学过计算机专业,初次开始学习html时,我是以w3c手册为学习教材,但是越往后看越觉得里面写的东西琐碎繁多,手册里介绍了很多标签,标签又有很多属性,它们各自又代表的什么含义。

就像下面的这个表示表格的一些标签,这是手册给出的概念,看了之后似乎也明白又不太明白,看完又没记住,回想起来,还是一头雾水,像是什么也没学到。

新手应该如何学习 PHP 语言?

那时我开始心急了,我无法想象我居然连基础的东西都都学不会,思量了一两天,我觉得我还是太浮躁了,我决定重新开始,动手敲敲试试,以前只是光看。就这样开始后,仿照别人家写的,运行一下看看浏览器显示的是什么效果,去掉某个属性之后看看是什么反应。我就这样笨拙的进行着,把每一个标签,每一个属性都敲了一遍,一个个的看到效果之后,我才理解手册里描述的概念是怎么回事了。


前端的知识比较锁碎,没有太多逻辑性可言。其中html和css的任何元素标记都要亲自动手实践,大部分新手之所以觉得难学,看不懂手册概念,主要是学习方法不对,“懒”是首要原因,因为不动手实践,光看概念是没什么用的。

所以克服掉懒的习惯,动起手来写一个HTML标记,运行之后看看效果吧,这样你才能真正掌握住。


不过,我建议初学的同学还是先看视频为好,因为操作效果都能看的到,手册这东西作为工具使用。


关于html和css中的标签和属性你没必要完全一个不差的记住,因为这没有太大的意义,等你做了一个小项目之后,你只需要记住常用的就行,其他的做到有印象,用的时候能想到,然后查手册即可。


当你学完之后一定要做一个简单的小项目,你学习时针对的都是散乱的知识点,最后要把这些东西整体的用一遍。

以下这个图就是我上一年学习html最后自己动手做的一个小页面:

新手应该如何学习 PHP 语言?



严肃说来,HTML是否被认为是“真正”的编程语言并不重要——它依然是一种需要学习的新技能。尝试新的东西是非常可怕的。你需要在处于这种未知的弱势地位时也敢于勇往直前,不要急头急脑一下子就想把东西学会,要沉得住气,踏踏实实的心态一点一点的来,而且失败和不确定也没有关系—— 事实上,它们都是成功的重要组成部分。




再说下js

在上面我已经阐述过了javascript,(简称js),但是在这里为什么还要再强调js呢?

因为很多人都说不用学js了,直接学jquery(简称jq)就行。jq是什么,jq是一种js的框架,它可以使开发速度更快,有很多做好的功能和特效,直接使用就行了。

但我并不同意光学jq,如果你想让自己能解决更复杂的问题,变得更有竞争力,或者只仅仅能更好的学习理解使用jq。那么请学习js!

上面说了jq是js的一种框架,它的本质还是js写的。js能完成的,理论上来说jq也能完成,但是并不是100%都能处理,而且jquery能做的,js 100%能完成。jquery只是工具简化操作,底层还是js。只有在学好原生js的基础上,才能更好的学习jquery或其它框架和处理前端问题。


后端:

到这里才说到我们的PHP。如果说HTML和css是看得见的部分,那么PHP就是看不见的部分。它负责在后面处理数据,然后返回给用户。

当网站由开始的静态页面发展到现在有了后端程序,那么网站才有了业务逻辑。简单的说,就像一台计算器,你在前端输入数据,然后点击提交,PHP给你处理运算,然后返回到前端,这时你就看到了结果。需要特别说明的是PHP并不能直接在浏览器中运行,它需要Apache环境支持,放在Apache服务器里面,然后用浏览器用访问,这个需要大家在学习过程中配置一下,非常简单。


我的学习技巧和心得

学习PHP我推荐韩顺平老师的《PHP从入门到精通》的视频教程,做PHP开发,包括有了解的同学可能都知道韩顺平老师,名气很大,它的这个教程几乎是每个PHP学子必看的精品教程。网上有很多这个教程的下载。其实韩老师不只是出了这一个教程,大家可以顺便搜一下每学网,每学网上有更多韩老师亲自做的其他教程。


我学习PHP时,慢慢的随着讲解的知识不断增多,不懂的问题也开始出现,刚开始时我就简单用脑子记着,想以后再解决。但是后来再回想,发现有一些竟然记不起来了,慢慢的,不懂的问题越积越多,我害怕遗忘掉我不想遗漏任何我没学会的地方,哪怕是一个暂时没细想,细想一下就能懂的简单问题。如果忘掉了,可能以后再也想不起来了,这对我来说是个很难弥补的损失,我是个完美主义者。


我想起了学习html时的教训,还是不能懒!我建立了一个文本,专门记载我不懂的,难以理解的,还有暂时没有解决的种种问题,甚至是灵机一动偶然想到的问题,也都统统不拉的记下来。

当我学完PHP后,再回头看,数一数大概百十条,这个文本我依然保留着:

新手应该如何学习 PHP 语言?

我希望大家在学习的过程中也能养成写记问题的习惯,好记性不如烂笔头么,因为学习过程中难免会碰到很多不懂的问题,但是你又不能一直等着这个问题解决,你需要继续前进,而时间久了,你可能就会遗忘掉。


每学到一个脚本难点的时候,尝试对别人讲一遍,你能讲清楚才说明你真的理解了。

除了记问题,我还把老师讲的知识,用自己的话按自己的理解自己的话写下来,这就如同是跟别人讲一遍似得。记住,要用自己的话自己的思路写,忘记老师的原话,这样别人的知识才会转化成你的。

所以,这是我当时写的笔记:

新手应该如何学习 PHP 语言?

写到这里,大家不要觉得我太麻烦,这样太慢,记住,思考要慢,慢的为了以后更快!

合理的“慢”,不是速度上的缺失,而恰是对“过快”的反思与矫正。慢是一种方法。尊重规律,沉下心来,追求质量,做起事来,严格有序,精益求精。


实践也是强化知识理解的过程

千万不要只看教程和学知识点,最重要的是实践,大多数人包括我,曾都是跟别人学起来像是学会了,到了自己做的时候却很难进行下去。

当你看完教程掌握了里面所述的内容后,可以按照老师讲的例子或者自己构思某个应用场景,然后从头写起。你会发现很多问题,也会加深对教程知识的理解。这样通过不断地练习和获取反馈,你的开发功底会很快提升。



MySQL数据库

当网站技术再往后发展时,人们需要网站处理存放更多的数据,来满足现实生活中的业务逻辑,这时候就需要数据库了。

数据库是什么,按字面的意思,数据库说白就是存放数据的地方,它可以是一段文字,一张图片或者一个文件的URL地址等等。比如,当你想浏览一篇文章时,你点击文章标题,这个请求会跳转到PHP文件那里,PHP再从数据库取出你想看的那篇文章。

PHP和数据库是密不可分的,PHP后来在网站开发中更多的任务就变成了操纵数据库了。数据库有很多种,准确的说咱的这个数据库是mysql数据库,只是因为php和mysql关系非常好,它们两个是完美的搭配。所以我们学习PHP开发学习的数据库就是MySQL数据库。


我的学习技巧和心得

学习mysql时,我同样采用了学习PHP时的学习方法:记问题,写笔记。

还是想在强调一遍:要用自己的话写,忘记老师的原话,这样别人的知识才会转化成你的。


同样,这也是当时我做的:

新手应该如何学习 PHP 语言?

该通过做一个小项目强化一下了。比如去做一个文章或者商品管理系统,做做常用的增删改查。就像下面的添加这个商品功能页面,无非就是用PHP把前端用户填写的数据存放到数据库。

新手应该如何学习 PHP 语言?

编程只会在最初的几天里是个有意思的事情,之后大多会出现厌烦厌学。所以兴趣并不能完全成为编程的动力。通过项目开发,你会发现更多的编程动力是生活中需要的实际需求和通过高强度高密度的学习和思考后解决需求后的强烈成就感。



框架:

框架说白了就是一个已经帮你完成了部分功能的程序部件结构。

基本上到了公司动手做起真实的项目中都是使用框架来开发的,它可以使你的开发速度更快。

为什么?就说网站开发吧,比如你要做网站中的验证码功能,你需要动手自己从0开始写,同样的,写一个文件上传程序,你需要动手从0开始写。


这时你会问,我做什么不都是要动手写的吗?


但是你忽略了一个问题,验证码,上传文件等等这些都是网站中几乎不可缺少的基本功能,每个网站都要用到,这时候你可以动手把这些常用的功能写好,然后封装起来,用的时候直接调用就行了,大大减少了代码的重复性,而这其实也就是框架了。


先别说自己做一个框架,因为完成一个好的框架不是一项简单轻松的工作,而且更需要高的知识技术水平。所以我们要学习使用别人做好的专业的框架,大都说中小型公司都是使用的别人的框架,PHP常见的有thinkphp, ci, yii,我个人推荐学thinkphp,这个是国人做的,轻量级,学起来更容易些,使用的公司也比较多。


MySQL优化技术:

当你学会了PHP,mysql的一些增删改查技术后,你可以尝试做一个简单的文章管理系统了,能发布,修改,和查看文章。

但是,你试想一下,会不会遇到这样一个问题:当你查看一篇文章,MySQL需要从文章表中寻找你需要的那一篇取出来,此时你的文章已经很多了,比如有一百万篇,或者一千万篇时,mysql再从里面找一篇文章是不是越来越耗时了,平常文章量少的时候也许1秒钟就能打开一篇文章,此时可能需要十来秒,你愿意等吗?用户愿意等吗?就像新浪网,腾讯网这样的大型新闻网站,如果用户看一篇新闻需要等很长时间,那能行吗?


所以我们要对mysql进行优化,让数据库尽量用更少的时间找到我们需要的东西。


在这里就不讨论具体的技术细节了,

优化手段主要包括:

1,表的设计 (可以减少数据的冗余,节省磁盘的开销)

2,mysql的索引优化 (利用索引,可以加快查询数据的速度)

3,mysql的查询优化。 (加快查询的速度)

4,分区分表 (把一个大表分成几个小表,提高查询的速度)


大家在后来的学习中可以参照我介绍的这几个。

那么我学习mysql优化看的也是韩顺平老师的教程,叫做《韩顺平 大型门户网站Mysql优化技术》

地址:每学网 韩顺平 大型门户网站Mysql优化技术(完整版)【限时特价课程,独家配权威的PPT 课堂笔记 练习题】


页面静态化技术:

当你学会了MySQL优化技术,切不要沾沾自喜,新的问题的依然很多。

可以再试想一下:一个人访问时,和大量的人访问时?当你一个人访问也许很快,但是大量的人访问,mysql要处理大量的请求,它是忙不过来的,mysql支持的请求数是有限的,这很容易理解吧。


假如它一次只能处理100个请求,当超过100个人时,其他的用户是不是就要等着,这样速度又降下来了,如同上面举的新浪和腾讯网的例子,用户是等不了的。


怎么办?一个很好的解决方案是采用静态化技术。

为什么要采用静态化,就是把数据库的数据生成一个文件,用户第一次访问时,mysql依然从数据库里面取,当第二次乃至以后更多次的访问时就直接访问这个静态文件了,不再劳烦数据库了,这样就减轻了服务器的压力了。

推荐教程: 《韩顺平 大型门户网站页面静态化技术(完整版》

地址:http://www.imeixue.cn/Course-Index-course-id-16.html


Linux

我们的程序,数据库,整个网站终归都是放在linux系统的服务器上的,对于一般的程序员能做到基本的配置即可。基本命令、操作、启动、基本服务配置(包括rpm安装文件,各种服务配置等);会写简单的shell脚本和awk/sed 脚本命令等一般公司有相应的运维人员管理。如果对这个有兴趣,后期可以继续深挖。



非关系型数据库Redis/Memcached

怎么又是数据库?,不是已经讲过了mysql了?是的,上面咱们说的mysql是关系型数据库,所以这两个叫做非关系型数据库。


为什么需要它们?


与mysql不同的是Redis和Memcached 的数据是放在内存中的,mysql是放在磁盘中的,而访问内存中的数据速度要远大于放在磁盘中,这就是它们的好处。


那为什么还要学习MySQL,干嘛不直接学习使用Redis和Memcached?


因为:MySQL更适合海量存储数据,Redis和Memcached是在内存中的,需要很大的内存才行,而且放在内存中的数据也容易丢失,如果机器故障重启内存就释放了。


一般互联网公司大都采用MySQL + Redis,或者 MySQL +Memcached的方式进行架构;Redis/Memcached都是基于内存的,所以它们的速度非常快,包括读和写都很快,一般用在一些高并发,大数据量访问的场景之下。


推荐视频教程:《韩顺平 大型门户网站Memcached缓存技术(完整版)独家配权威的PPT 课堂笔记 练习题》

地址:每学网 韩顺平 大型门户网站Memcached缓存技术(完整版)【限时特价课程,独家配权威的PPT 课堂笔记 练习题】

《韩顺平 Redis经典入门视频课程》

地址:每学网 韩顺平 Redis经典入门视频课程


说到最后,总之,学习PHP并不难,难的是一个体系。我写的总体比较基础,主要是针对一些刚入门学习的同学,在整体上给建立一个完整的知识体系。


**************************************************************************************************

在这条路上,可能尽管你如此努力,可还是会遇到你难以理解的问题。同样,我自己曾经连续半个月失眠,为了考虑解决那些棘手的问题。


我想让你知道的是:

要想确切地掌握编程语言的每一个特质是不可能的——它们是野性难驯的猛兽,如果你认为编程是一种易于学习的简单技能,那可能就会南辕北辙。作为一个程序员,需要学习的东西是无限的,并且一种不能满足的持久遗憾感,即使是该领域的专家也时常会有。


不用担心,知道了这些,把心态放正,一步一步的来,不要试图一下子掌握所有内容,设定那种如 “我要学习如何编写代码”这种不明确的目标——目标应该更具体,并将任务分解成更小的任务。不要放弃,吸取知识是擅长它的第一步骤,一定要给自己信心,尝试用更多的方式去考虑一个问题。



俗话说得好:无论你认为自己能做到,还是认为自己做不到…..就要看你怎么暗示自己了,这是我经常的借口:

我之所以不明白这一点,是因为我有一个创造性的大脑。而编程是逻辑性的,我的大脑只是不习惯这种思维方式!



在整个学习过程中,我希望大家:

不要相信任何‘神话’,学会自己思考。

不要墨守成规,大部分人知道的事情可能都是错的。

不要相信网上的传言,敢于提出质疑,去测试,根据实践做决定

基本语法
编码技巧,编码规范
各类函数
各类PHP模块
学习一款cms或二次开发
了解PDO,ADO、数据驱动层、顺路去学下mysql
报错机制
面向对象
使用一款框架帮助开发
魔术方法
设计模式
反射
动手写各类工具类、驱动。
自己写一款小框架(说实话,你没这么多精力去写的,要面面俱到,了解很多泛面知识)
你已经是个中高级程序员了。

开始折腾PHP的运行原理和内核机制吧
试着写一些php的C扩展帮助你的项目

这个时候,就强烈建议你去学一门强类型语言如JAVA。
对比不同和优缺点。

着手了解服务器方面吧 1、订立一个目标,譬如开发一个极简的内容管理系统。那么一切学习和积累都以达成目标为目的。并且订立系统的基本对象和功能,如:文章分类,文章数据。
2、学习基础的网页前端,Js 和CSS大可跳过,最起码能搭建HTML页面,以及常用标签,表单等。并用HTML搭建系统的页面,如:文章管理,编辑,分类管理,网站首页,列表,文章详细等。
3、装上一个L(W)AMP 环境,phpMyAdmin,熟悉MySQL数据库,学习简单的SQL语句,增删查改,并把文章系统的分类,映射为关系数据库的数据表,完成数据表的设计。
4、学习PHP,从语法,了解基本的动态网页运行过程,熟悉数据传递的基本方法(如GET,POST) 的使用。
5、建立PHP站点,规划一下网站各个功能的访问地址(先别考虑什么静态化),创建对应文件。
6、熟悉mysql,str,array系的函数,学习PHP操作数据库的方法。这个时候你应该能完成各个规划页面的功能了。其中可能会遇到一些细节问题,如:编码,数据库建接,要学习根据PHP的报错信息定位问题(这叫debug),和利用各种互联网资源。
能完成上面的事情你应该对PHP有初步的认识了。
下面是真正的入门开始。有人愿意看且有空再补。

/*************************2015-08-11*************************/
上面你已经做好一个CMS的雏形了,虽然简陋但已经实现了基本功能,而且你对这个系统一定有新的想法是吧?且慢!先学习一下搞破坏,检查一下你做的程序是否有以下问题:
1、想必你的网站有用到类似这样
<code class="language-text">INSERT INTO table (col1, col2...) values (val1, val2...)
</code>
这样说吧,其实php开发,不只是一个简单的php开发,而是整个一个行业,一般叫web开发,或者php后端开发,所以从html,css,js,jq,php,sql基本这些都要有了解。当然你有html,css基础,那就略过这部分。

首先js这块看看,javascript程序设计第三版,看这本书,方法是一样的,先粗扫一遍,然后第二遍,敲书上的例子,然后试着理解,理解之后看看别人的代码。
至到能大概了解js的知识结构为止。
然后jquery看看,锋利的jquery,jquery api上面的例子看看。
刚说到js这块,下来就是php。
恩,php这块其实包含两部分内容:php + sql(mysql)。
如果你不着急,可以从sql入手,然后在往php学习,因为你如果js入门了,js与php有很大的相似性,然后他们的区别就是操作的对象不一样而已。但是sql的操作确实需要去学习。
然后在php目录里边找一本书:细说php第二版,这是兄弟连老师联合出的一本书入门应该比较适合。
然后有一本php与mysql程序设计,第四版,这本也是比较全面,包含了php基本概念与sql的知识,但都比较浅显,入门而已。
然后,sql的书籍,要去db里边看了,随便找一本mysql的书,增删改查,基本的要会。
这些学完之后,就开始实战,做几个项目,大概有这么几个东西可以折腾:
1. 留言板,
2, blog
3. 企业站,
4. 商城
5. 新闻综合站。
只是参考具体的看自己的兴趣吧。
php基本学会之后,剩下的就是了解php的框架,大概市面上有这几个框架,
1. ci 经典的轻巧框架,在全球的使用量比较靠前,入门比较简单。
2. thinkphp,国内人用的比较多,是国人开发,现在势头真猛,比ci封装的更好,也更傻瓜。
3. yii,这个是全球排名第一的框架,但是入门曲线稍高。
4. zend frame这是有php组织开发的框架,文档比较规范,也比较重,适合构建大型项目。
5. laravel 这是一个呼声比较好的一个新型框架,各方面比较优秀,但是相对中文资料比较少。
等这些了解了,估计已经入门了,学习应该找到方向了。
php 兄弟连教程
免费PHP视频教程下载-LAMP兄弟连PHP培训教程学习网
看视频主要是实战,看书主要是面试或积累自己的理论基础。
然后就是开发工具,推荐使用:初期sublime text,GitHub - jikeytang/sublime-text: sublime-text等入门之后:phpstorm。
学习的主要技巧,在:实战,动手敲代码+重复。
刚开始代码看不懂的时候,跟敲,看懂了背敲,看熟了自己敲。
恩,大概就这么多东西,剩下的就看你自己的了。

以上个人经验,仅供参考。
如果对PHP感兴趣可以加这个群交流:132984819,禁止闲聊,非喜勿进。 学php过程中只有1%用于了解语言细节。剩下的99%用于了解数据库(rdbs和nosql)、server(apache和nginx)、后端框架以及其中的mvc架构、前端框架(bootstrap和jq)、linux、分布式整站架构。

每一项都要充分了解。祝你好运。 PHP绝不是表明的那么简单,
用PHP实现一些功能,或者建个简单的网站,那根本就不叫会PHP.
起码要知道软件工程的概念。
要理解PHP的运行机制。
起码要会一门低级语言。
英语不能太差。

更关键的是,一定要自己喜欢这么技术。
因为PHP入门门槛低,很多培训机构的大肆宣称,许多根本就不热爱编程或者根本就不适合编程的人涌了进来,仅仅混口饭吃而已,然后以实现功能为目标,什么代码规范,开发流程统统没有。这样永远是学不会PHP的 同意于海宗的观点。我学习Web框架的时候一般都是先看看相关教程,然后自己实现一个购物车,就差不多入门了。(好吧,我总是喜欢把PHP和Web框架等同起来……) 从留言板开始,慢慢丰富留言板的功能,最后就成了CMS了 php只是学习php的开始。 php这东西,其实关键是入门,你知道php是个啥了,也就学会了。

什么叫会php,会输出helloworld算会php吗??会写cms算会吗???界限在哪里?


所谓会php,界限就在你能用php查、插、改、删 mysql数据,能做到这一点,就算会php了,做不到,就不算。


浏览器访问网页,用户想和网站互动,只有4个门口,url,表单,cookie,session
其中用户参与的,只有url参数和表单。会通过这四种门口操作php来查插改删mysql数据,就算会php了。你也什么项目都能做了。

具体怎么操作,网上随便搜下就有,找个记事本烤下来,用的时候打开复制下就好了。
==============================

php就这么简单



其他的就点语法东西,看看手册、知道有这个东西就行了,碰到了不会,搜索下就是了。

用面向过程就能实现全部程序功能,如果是上班,需要面向对象编程,那就再学下,也很简单


如果是html,css,有本很好的入门书叫htmldog,我看了一下午就学会htmnl css了
php目前不论是网上还是书店都没有很合适的php入门书籍。全部偏呆,偏难。我考虑如果自己有资格的话,写本网络版教程分享下。
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn