초보자가 PHP를 배우는 아이디어와 방법이 Zhihu에서 재인쇄되었습니다.

phpcn_u11440
풀어 주다: 2023-03-16 10:46:02
원래의
1856명이 탐색했습니다.

作者:沈杰
链接:https://www.zhihu.com/question/20003635/answer/81745609
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

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

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

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

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


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


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


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


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


前端:

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


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


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


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


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


我的学习技巧和心得:

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

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

<img src="https://pic2.zhimg.com/50/c96d67c8eb82d138cb21a610472523a9_hd.png" data-rawwidth="636" data-rawheight="377" class="origin_image zh-lightbox-thumb" width="636" data-original="https://pic2.zhimg.com/c96d67c8eb82d138cb21a610472523a9_r.png">

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


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

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


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


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


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

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

<img src="https://pic4.zhimg.com/50/1afe7af6dfbc15a89d37d67be174a12b_hd.jpg" data-rawwidth="781" data-rawheight="545" class="origin_image zh-lightbox-thumb" width="781" data-original="https://pic4.zhimg.com/1afe7af6dfbc15a89d37d67be174a12b_r.jpg">



严肃说来,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后,再回头看,数一数大概百十条,这个文本我依然保留着:

<img src="https://pic4.zhimg.com/50/c3214866529991a562bf13627980ecc3_hd.png" data-rawwidth="817" data-rawheight="802" class="origin_image zh-lightbox-thumb" width="817" data-original="https://pic4.zhimg.com/c3214866529991a562bf13627980ecc3_r.png">

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


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

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

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

<img src="https://pic3.zhimg.com/50/36dcaccf94220f5ed4864926b3dd09ee_hd.png" data-rawwidth="1023" data-rawheight="484" class="origin_image zh-lightbox-thumb" width="1023" data-original="https://pic3.zhimg.com/36dcaccf94220f5ed4864926b3dd09ee_r.png">

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

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


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

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

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



MySQL数据库

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

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

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


我的学习技巧和心得

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

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


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

<img src="https://pic4.zhimg.com/50/aaa9297d66ab00458395aafd7aa7ac27_hd.png" data-rawwidth="1707" data-rawheight="906" class="origin_image zh-lightbox-thumb" width="1707" data-original="https://pic4.zhimg.com/aaa9297d66ab00458395aafd7aa7ac27_r.png">

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

<img src="https://pic2.zhimg.com/50/dfd275b93b32b095968a73aab8363101_hd.png" data-rawwidth="860" data-rawheight="495" class="origin_image zh-lightbox-thumb" width="860" data-original="https://pic2.zhimg.com/dfd275b93b32b095968a73aab8363101_r.png">

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



框架:

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

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

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


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


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


프레임워크를 직접 만든다고 말하지 마세요. 좋은 프레임워크를 완성하는 것은 간단하고 쉬운 일이 아니며, 높은 수준의 지식과 기술이 필요하기 때문입니다. 그래서 우리는 남이 만든 전문적인 프레임워크를 배워야 합니다. 대부분의 중소기업에서는 남의 프레임워크를 사용합니다. 일반적인 PHP에는 thinkphp, ci, yii가 있습니다. 이것은 중국인이 만든 것이고 가볍습니다. .수준으로 배우기가 더 쉽고, 더 많은 회사에서 사용하고 있습니다.


MySQL 최적화 기술:

PHP와 mysql의 몇 가지 추가, 삭제, 수정 및 쿼리 기술을 배운 후 기사를 게시하고 수정하고 볼 수 있는 간단한 기사 관리 시스템을 만들어 볼 수 있습니다.

하지만 상상해 보세요. 기사를 볼 때 MySQL은 기사 테이블에서 필요한 기사를 찾아서 가져와야 합니다. 이때 이미 다음과 같은 많은 기사가 있습니다. 100만개 또는 1000만개의 기사가 있으면 mysql이 다른 기사를 찾는 데 점점 더 많은 시간이 소요됩니까? 일반적으로 기사가 적을 때는 기사를 여는 데 1초가 걸릴 수 있습니다. 10초 정도 소요됩니다. 기다려 주시겠어요? 사용자가 기다릴 의향이 있습니까? Sina나 Tencent와 같은 대규모 뉴스 웹사이트의 경우 사용자가 뉴스를 읽는 데 오랜 시간을 기다려야 한다면 괜찮을까요?


따라서 데이터베이스가 더 짧은 시간에 필요한 것을 찾을 수 있도록 mysql을 최적화해야 합니다.论 여기서는 구체적인 기술적 세부 사항을 논의하지 않습니다.

최적화 방법에는 주로 다음이 포함됩니다.

1, 테이블 디자인(데이터 중복을 줄이고 디스크 비용을 절약할 수 있음) 최적화(인덱스를 사용하면 데이터 쿼리 속도가 빨라질 수 있음)

3 , MySQL의 쿼리 최적화. (조회 속도 가속화)

4, 파티션 테이블 (큰 테이블을 여러 개의 작은 테이블로 나누어 쿼리 속도 향상)

나중에 학습할 때 몇 가지를 참고할 수 있습니다.

그러다 제가 mysql 최적화에 대해 배운 것도 Han Shunping의 "Han Shunping의 대형 포털 Mysql 최적화 기술"이라는 튜토리얼이었습니다.

주소: Han Shunping의 대형 포털 Mysql 최적화 기술(풀 버전) [기간 한정 특별 가격 강좌, 독점 배포] 권위 있는 PPT 수업 노트 연습]

페이지 정적화 기술:

MySQL 최적화 기술을 배울 때 안주하지 마세요. 여전히 새로운 문제가 많이 있습니다.

한 번 더 생각해보면 한 사람이 방문할 때와, 다수가 방문할 때? 혼자 방문할 때는 매우 빠를 수 있지만, 많은 사람이 방문할 때는 mysql이 많은 양의 요청을 처리해야 하고, mysql에서 지원하는 요청 수가 제한되어 있다는 것을 이해하기 쉽습니다. .


한 번에 100개의 요청만 처리할 수 있다면 100명이 넘을 때 다른 사용자가 기다려야 하므로 위에서 언급한 Sina 및 Tencent의 예처럼 속도가 다시 느려지게 됩니다. 사용자는 기다릴 수 없습니다.


어떻게 해야 할까요? 좋은 해결책은 정적화 기술을 사용하는 것입니다.

정적화를 사용해야 하는 이유는 사용자가 처음으로 액세스할 때 데이터베이스 데이터에서 파일을 생성하는 것입니다. 사용자가 두 번째로 액세스할 때에도 mysql은 해당 파일을 가져옵니다. 앞으로 더 많은 경우 정적 파일에 직접 액세스하게 되어 더 이상 데이터베이스를 방해하지 않으므로 서버에 대한 부담이 줄어듭니다.

추천 튜토리얼: "Han Shunping 대형 포털 페이지 안정화 기술(풀 버전)"

주소: http://www.imeixue.cn/Course-Index-course-id-16.html

Linux

us 프로그램, 데이터베이스, 전체 웹 사이트는 최종적으로 Linux 시스템 서버에 배치됩니다. 일반 프로그래머의 경우 기본 명령, 작업, 시작 및 기본 서비스 구성(rpm 설치 파일 등 포함)을 수행할 수 있습니다. 간단한 쉘 스크립트와 awk/sed 스크립트 명령을 작성하세요. 일반적으로 회사에는 관리를 위한 해당 운영 및 유지 관리 인력이 있습니다. 이에 관심이 있다면 앞으로도 계속해서 더 자세히 알아볼 수 있습니다.



비관계형. Database Redis/Memcached

왜 데이터베이스인가요? 아직 mysql에 대해 이야기하지 않았나요? 예, 위에서 언급한 mysql은 관계형 데이터베이스이므로 이 둘을 비관계형 데이터베이스라고 합니다.


mysql의 차이점은 Redis와 Memcached의 데이터는 메모리에 저장되는 반면 mysql은 디스크에 저장되며 메모리의 데이터에 액세스하는 속도가 훨씬 빠릅니다.


그렇다면 왜 Redis와 Memcached 사용법을 배워야 할까요?

왜냐면: MySQL은 데이터의 대량 저장에 더 적합합니다. Redis와 Memcached는 메모리에 있고 많은 양의 메모리를 필요로 합니다. 게다가 메모리에 저장된 데이터는 머신이 실패하고 다시 시작되면 쉽게 손실됩니다. 출시된.


대부분의 인터넷 회사는 아키텍처에 MySQL + Redis 또는 MySQL + Memcached를 사용합니다. Redis/Memcached는 모두 메모리 기반이므로 읽기 및 쓰기를 포함하여 매우 빠르며 일반적으로 높은 수준의 일부 시나리오에서 사용됩니다. 동시성 및 대용량 데이터 액세스.


추천 동영상 튜토리얼: "Han Shunping 대형 포털 Memcached 캐싱 기술(풀 버전), 권위 있는 PPT 수업 노트 연습 문제를 독점적으로 갖추고 있습니다"

주소: Memcached Han Shunping 대형 포털 Memcached 캐싱 기술(풀 버전) [기간 한정 특별 제공 ] 권위 있는 PPT 수업 노트와 연습문제를 독점적으로 갖춘 강좌]

"Han Shunping Redis Classic 입문 동영상 강좌"

주소: Mixue.com의 Han Shunping Redis Classic 입문 동영상 강좌


결국 간단히 말해서 , PHP를 배우는 것은 어렵지 않습니다. 어려운 것은 시스템입니다. 내가 쓴 내용은 일반적으로 비교적 기본적이며 주로 이제 막 배우기 시작한 학생들을 대상으로 하고 전체적으로 완전한 지식 시스템을 구축합니다.


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

이 길에서 노력에도 불구하고 여전히 이해하기 어려운 문제에 직면할 수 있습니다. 마찬가지로 저도 그 어려운 문제를 해결하려고 고민하다 보름간 불면증에 시달린 적이 있습니다.


여러분이 알아두셨으면 하는 점은 다음과 같습니다.

프로그래밍 언어의 모든 특성을 마스터하는 것은 불가능합니다. 프로그래밍 언어는 야수이며, 프로그래밍을 배우기 쉽다고 생각한다면 단순한 기술은 그 반대로 이어질 수 있습니다. 프로그래머로서 배워야 할 내용에는 한계가 없고, 해당 분야의 전문가라도 가끔 느끼는 끝없는 후회가 계속됩니다.


걱정하지 마시고, 정신을 차리고 차근차근 따라가세요. 한꺼번에 모든 것을 마스터하려고 하지 말고, “코딩을 배우고 싶어요. ”— —목표는 보다 구체적이어야 하며 작업은 더 작은 작업으로 나누어야 합니다. 포기하지 마십시오. 지식을 흡수하는 것이 능숙해지기 위한 첫 번째 단계입니다. 자신감을 갖고 문제에 대해 더 많은 방법으로 생각하려고 노력해야 합니다.



할 수 있다고 생각하든, 할 수 없다고 생각하든...그것은 스스로에게 어떻게 힌트를 주느냐에 달려 있습니다. 이것은 제가 자주 하는 변명입니다:

내가 하지 않는 이유. 나는 창의적인 두뇌를 가지고 있기 때문에 이것을 이해하지 못합니다. 그리고 프로그래밍은 논리적입니다. 제 두뇌는 이런 사고방식에 익숙하지 않습니다!



전체 학습 과정에서 모두가 다음과 같이 하길 바랍니다.

어떤 '신화'도 믿지 말고 스스로 생각하는 법을 배우세요.

규칙을 고수하지 마세요. 대부분의 사람들이 알고 있는 것이 틀릴 수도 있습니다.

인터넷에 떠도는 소문을 믿지 말고, 과감하게 질문하고, 테스트하고, 실천에 따라 결정하세요


위 내용은 초보자가 PHP를 배우는 아이디어와 방법이 Zhihu에서 재인쇄되었습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!