写给PHP新手的入门建议 – 魅影资源博客

写给PHP新手的入门建议

PHP 诗无尽头 3个月前 (04-30) 24次浏览 已收录 0个评论

这篇文章其实也不为了什么,只是简单的整理一下我见到的新手经常问的一些问题,以及我自己的一些经验。这些东西也不一定多有用,不过,能帮一个是一个吧

初步认识

首先,先认识一下PHP。如果按照语言的运行方式分类的话,我们常见的语言一般有两种,一种是编译型,一种是解释型。编译型语言代表则是 C/C++、Java,它们修改之后需要经过一个“编译”的过程,才能运行。它们一般运算效率比较高。解释型语言代表则是PHP、JavaScript、Python,它们不需要编辑,因此修改可以立刻生效,但是相应的运算效率会有一定损耗。解释型语言流通的原因,是它们满足了当下互联网“快速迭代”的需求,拿一定的性能,来换取开发和运行的便利。

从上面这一小段可以看出,PHP是不需要编译的。那么,难道直接就可以运行PHP?实际上,和 JS、Python 类似,PHP也需要一个“工具”来运行,我们叫它PHP引擎,或是 Zend 引擎(因为 PHP 是 Zend 公司开发维护的)

编译型语言的编辑、编译、调试等一般是集成到一起的,方便我们使用,我们称之为 IDE,例如写 C/C++代码一般会用到 Visual Studio,写 Java 代码一般会用到 Eclipse、IDEA。解释型语言则不然,它不需要特定的 IDE,一般靠普通的编辑器就可以编写。

开始前的准备:环境和编辑器

看了第一段,大家心里应该也有个数了。我们需要两个东西,一个用来运行 PHP,一个用来写 PHP 代码。

因为 PHP 常作为 Web 开发语言(当然也不局限于 Web),因此,我们常安装的环境,便是 Web 环境。Windows 下,我们一般使用 WAMP。WAMP 是 Windows+Apache+PHP+MySQL 的意思,其中,Apache 是服务器软件,用来接收和处理 HTTP 请求,类似的软件还有 nginx、lighttpd 等。它如果接收到需要 PHP 进行处理的请求,就将请求交给 PHP 引擎来处理,处理完成之后,PHP 引擎将结果交给 Apache,Apache 再将结果发给用户。MySQL 则是一款常见的数据库软件。如何安装,请自行搜索。

接下来说说编辑器的选择。PHP 其实对编辑器没有太多要求,甚至于记事本都可以写(笑)。不过,作为“专业人士”,当然是不可能使用记事本的。比较“重量级”的可以考虑 PHPStorm、Zend Studio,它们的特点是“大而全”。如果你喜欢轻量级的,选择也很多,例如,Visual Studio Code、SublimeText、Notepad++。编辑器的选择全凭个人喜欢,没有孰优孰劣之分。当然,在这里面,一般会排除掉 Dreamweaver,原因很简单,其一是并不需要它的 HTML 编辑功能,其二是它在编码识别方面做的不太好。

至于其他学习资料,仁者见仁智者见智。视频根据个人需要,如果你学习能力还可以,那不太需要视频(因为视频讲的太慢了)。书籍可以准备一本或几本(如果你不想看也可以不要)。除此之外,PHP 手册也是不能少的资料之一。

PHP 到底是怎么运行的

这一段也不深究 PHP 内核层面的运行机制,就说说最简单的部分。首先,Apache 接收到请求,如果请求是应该给 PHP 处理的,则调用 PHP 引擎来处理请求。处理完之后,把结果返回给用户。

Apache 在这里做了什么事?第一步是判断,一般来说,我们会把后缀为.php 的文件作为 PHP 处理,而其他请求则 Apache 自己就可以完成处理。调用 PHP 引擎的时候,Apache 会把基本的信息告诉引擎,例如用户 IP、HTTP 请求头、请求的文件等。最后,将 PHP 返回的结果拼装成完整的 HTTP 请求,发回给用户。实际上对 Apache 来说,PHP 做了什么事,它完全“不关心”。对它来说,PHP 就是一个“黑盒”。

PHP 引擎做了什么事呢?在一些初始化工作后,它会将文件进行语法分析,提取出应该执行的代码。执行完毕后,除了返回结果外,它还会进行一些清理工作,释放资源。因为每个请求都是在接收到时建立、完成时销毁,因此,每个请求之间,除非通过一定机制持久化(例如存到磁盘、存到浏览器等),都是互不干扰的,这也减少了产生内存泄漏的可能性。

HTTP 请求

既然要学习 Web,就不可避免的要接触到 HTTP 请求。HTTP 请求一般分为请求和响应两个部分。请求和响应又分别分为请求头、请求主体、响应头、响应主体。

请求头一般包含了这个请求的基本信息,例如,请求方式是什么,地址是什么,Cookie 有什么。请求主体则一般只存在于 POST 请求和 PUT 请求,用来传输一些比较长的数据。

响应头则包含了一些基本信息,例如,服务器发给浏览器的是什么东西,有多大。而主体则是实际内容,供浏览器自行处理。例如,如果响应头告诉浏览器,发给它的是一个网页,则浏览器会把主体拿来渲染。如果响应头里说,这是一个未知的文件,浏览器一般就会显示“下载”提示。

因为头都在主体前面,这也解释了一些常见的问题,比如,为什么 header 函数前不能有输出。

从 Hello World 到真正的程序

PHP 怎么写 Hello World,恐怕搜出来的文章已经不止成千上万了。所以,我也不写 Hello World 怎么实现,我就讲讲,怎么从 Hello World 到第一个程序。

首先你可以给自己定一个小目标,比如,我的程序是用来计算一个公式的,那么,我们就需要将公式的未知量输入,然后输出结果。我们来分析一下这里面需要哪些知识:

  • 输入和输出
  • 变量和运算

因为我们讲的是 Web 开发,所以,输出和输出我们一般靠的是 HTML 页面。HTML 页面中的“表单”则是用来提交数据给服务器的。表单如何使用,请自行搜索相关文章。

将表单的数据接收到后,进行计算,最后像 Hello World 一样输出。这样,第一个小程序就完成了。

虽然这个例子非常简单,不过,我们也可以学到一些东西。首先,将问题拆分成步骤,然后,分析我缺少哪些知识,再去针对性的找相关文章和文档。最后再动手实践。

不过,我觉得,真正想学的人不会就这样满足。这只是最简单的交互,实际上,Web 网站往往都是有持久化存储的。常见的持久化存储不外乎就是文件、数据库。它们具体怎么实现我也不再重复。我们来看下一个小程序,一个留言板,功能很简单,访客可以输入一些文字,然后提交。刷新页面,就可以看到他的留言,并且,其他人也可以看到他的留言。我们来分析一下,有什么功能:

  • 提交留言
  • 展示留言

那么,这些功能需要什么知识?

  • 表单(输入)
  • 写入文件或数据库(存放留言)
  • 读取文件或数据库(展示留言)

在完全自己实现了这个小程序之后,也就代表着你基本上可以独立尝试一些新东西了。接下来,再来一个稍微复杂一点的:博客系统

与上面类似,我们来分析一下功能:

  • 登录(管理员)
  • 写文章、修改文章、删除文章(管理员)
  • 查看文章(访客)

那么,我们又需要哪些知识呢?

  • 持久化状态(用于管理员登录)并进行验证,常见的方式有 Session、Cookie(实际上 Session 也是基于 Cookie 的)
  • 文件或数据库的增、删、改、查,以及列表

接下来,便是自己去学习相应的知识,然后实现对应的逻辑了。

从上面不难看出,当我们想进行一个程序的开发时,第一步是分析需求(我们需要哪些功能,该怎么安排这些功能)第二步则是分析技术(实现功能需要哪些技术),而最后才是开工。

PHP 的进阶

当你能用原生 PHP 写出一个最简单的博客系统之后,就代表你基本上掌握了 PHP 的绝大部分原生功能了。这个时候,学习方向就不是“缺什么补什么”了,你就要有目的性的学习。

在“进阶”之前,我认为你应该已经大体掌握的知识有:PHP 的基本语法、文件的基本操作、数据库的基本使用、基本的类与对象知识、Session 与 Cookie。如果没有,那么,请再将博客系统用前面的五个知识实现一遍。

进阶的第一个,就是使用框架。具体哪个框架其实没有特别要求,不过,对新手来说,ThinkPHP 是比较合适的,因为它入门很简单,它可以让你快速了解很多概念:MVC、路由、单一入口、自动加载……这些概念在其他框架,甚至于很多其他语言也是适用的。

第二个则是学会使用一些工具和类库,例如用来调试 PHP 程序的 xdebug,用来发送邮件的 PHPMailer,用来读写 Excel 表格的 PHPExcel。对于很多类库,你可以多了解一下他们的实现方法,从中可以学到一些小技巧。

第三个则是尝试自己编写一个框架。当你完成一个相对完善一些的框架的编写后,你不但可以快速上手其他框架,也可以达到巩固自己的基础知识的目的。

最后稍微提一下,为什么我觉得,学习框架应该是在“进阶”的时候再做的事,因为框架更重要的是它的设计思想,而不是它怎么用。在你没有扎实的基础前,你只能学会框架的用法。当你面临一个之前没有学习过的框架,或者框架出现了意料之外的问题的时候,你就会束手无策——这不是我想要的结果。

小结

这篇文章就写到这里了,如果你已经把上文的都做到了,那么,该如何发展,自己心里也已经有个数了。希望这篇文章能帮到一些人吧

作者:泷涯零点
链接:https://blog.sylingd.com/archives/340.html
來源:泷涯零点
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

魅影博客 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:写给 PHP 新手的入门建议
喜欢 (3)
[18739399353]
分享 (0)
关于作者:
唯有自由才能触摸虚无的自我
发表我的评论
取消评论
表情 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址