《PHP 7 原版》

Aleksandr Shitik
Aleksandr Shitik

我撰写自己的文章和书籍,并评论电影和书籍。 在宇宙学与天文学、IT、效率与规划方面的专家。

PHP 7 原版
Dmitry Koterov, Igor Simdyanov
类别: 编程
出版年份: 2016
阅读年份: 2020
我的评分: 最高
阅读次数: 1
总页数: 1071
摘要(页): 0
原始出版语言: 俄语
其他语言的翻译: 未找到其他语言的翻译

通常我在评论中会对所有章节做一个简要的回顾,但这次恐怕不是这样。在这里,我将仅仅简要概述十个部分,把每个部分下的所有章节整合成一个统一的描述。最后,在文章的结尾处,我会写一下我对这本书的看法,并尽量指出它的优点和缺点。

Web 编程基础

严格来说,这本书不仅仅讲 PHP,还讲 Web 和互联网。说到底,离开了互联网,很难想象 PHP 还能做什么——比如作为桌面应用程序、移动应用或者操作系统的驱动程序。因此,作者们从基础讲起。例如,这里讲解了 TCP/IP、服务器、服务提供商、主机托管、HTML 文档、端口等概念。还介绍了 GET 和 POST 方法的使用,并简要介绍了 HTML(主要是表单)、CGI 和 PHP 内置 Web 服务器。

PHP 语言基础

本部分共八章,完全围绕语言的基本概念展开。对于那些通过书籍学习编程语言的人来说,这部分内容会非常容易理解:变量、数据类型、运算、条件语句、循环等等。比较特别的是对表单数据的处理,以及生成器。此外,函数的内容也在本部分中进行了讲解。

PHP 的标准函数

PHP 拥有大量内置函数,能处理各种数据类型,覆盖了非常广泛的应用场景。其中一部分函数,现在甚至连语言开发者都不推荐再使用了。不过,如果你不想去查官方文档(虽然我认为官方文档才是最权威且最全面的来源),那么可以看看本书作者整理的列表。尤其是这里涵盖了最常用和最流行的函数。它们按组分类,每组对应一章,因此我可以直接列出章节名称:

  • 字符串函数
  • 数组处理
  • 数学函数
  • 文件与目录操作
  • 文件权限与属性
  • 调用外部程序
  • 日期与时间处理
  • 正则表达式基础

面向对象编程基础

虽然这部分大约有 100 页的内容,但几乎没有冗长乏味的 OOP 理论。材料假设你对面向对象编程已有初步了解。本书中对 OOP 的讲解比较平缓,但从一开始就会看到 PHP 代码。涉及的主题也是 OOP 中常见的:创建对象、构造函数、析构函数。顺便一提,讲析构函数时,还涉及了垃圾回收和循环引用的问题。

接着是访问控制符(public、protected、private)、关键字 this 和 self、对象序列化和魔术方法。作者也没有忽略面向对象编程的主要范式,比如继承、多态、封装。同时还涉及了接口、trait、抽象方法和虚拟方法。顺带提一句,近年来关于 PHP 中 OOP 的 RFC 有不少改进和语法糖,但本书当前版本中自然没有这些内容(也许在新版中已经补充了)。总体而言,这一部分内容讲解得不错——包括命名空间、类的自动加载等主题。最后一章讲的是错误处理。

PHP 中的预定义类

既然 PHP 有这么多内置函数用来处理各种数据类型,那么自然也可以将它们整合成类,以便更好地使用。如果 PHP 的开发者一开始就这样做,比如把字符串和数组相关的函数放进类里,可能会更方便一些(例如 Laravel 就提供了类似的类)。

在原生 PHP 中,被整合为类的函数略有不同。比如与日期和时间、可迭代数据类型、反射(代码操作)、文件和目录等相关的函数就被组织成了类。

PHP 中的网络操作

在这里我们回到本书开头的主题,探讨如何通过 PHP 进行网络操作。内容包括设置和读取 HTTP 头部、处理 Cookies 和会话、处理 URL(本质上讲的是 PHP 的超全局数组和一些标准函数)。此外还展示了使用 socket 和发送邮件的例子。每个主题讲解都比较详细(除了 socket,讲得相对简略)。

PHP 扩展

这里讲的是可以通过 php.ini 配置文件启用或禁用的扩展。其中一部分扩展是内置的,另一部分则是第三方的,需要额外安装和激活。

本部分讲解了如何安装这些扩展,以及如何在不同操作系统中加载它们。还简要介绍了一些 php.ini 的配置项,例如如何修改内存限制。

其中一章讲了安全性和输入数据的过滤处理,比如从用户表单或 URL 获取并处理数据。例子中使用了正则表达式,因此建议对其有所了解。

接下来的几章介绍了 MySQL、图像处理、网络操作和 Memcached。数据库部分是一个简单的入门介绍,包括列、行、主键和数据类型。展示了使用普通 SQL 查询和 PDO 扩展操作数据库的示例(PDO 放在扩展中讲解也是合理的,因此前面需要数据库基础的简要介绍)。

图像处理用的是 GD 扩展,网络操作使用的是 php-curl,Memcached 则使用 php7-memcached 扩展。

本部分有几章内容,介绍了 Composer 是什么(以及如何安装和使用它),什么是 Packagist,以及在哪里可以找到第三方库。最后讲了如何创建自己的库,供他人使用。为了使组件符合通用标准,作者还介绍了 PSR。

PHP 编程技巧

这是比较有争议的一部分,由一些小章节组成,旨在通过实际案例展示如何使用代码。其中包括处理 XML、表单(之前讲过多次,但这次包括文件上传)、设置重定向、处理 HTML 以及其他一些互不相关的主题。

部署

“部署”一词在这里并不是指现代的 CI/CD 流程,而是更接近于安装 Git、通过 SSH 连接,以及安装其他一些你在进行非简单脚本编写时需要的工具。比如安装数据库、Web 服务器和虚拟机等。

结语

优点

这是一本非常详尽的书,不会让人感到无聊,配有大量示例和代码片段。每个主题都有详细的说明。我会说,这本书可以在信息丰富度和实用性方面排名第二——仅次于官方文档。就我所见,这是我读过最详尽的 PHP 书籍。

缺点

这本书不仅大,简直是庞大。很多人可能根本无法坚持读完。此外,一些内容已经过时了(当然,我希望作者们会持续更新版本)。

Вверх