将代码质量工具安装为 phar 文件

Composer 并不是为项目添加代码质量工具的唯一可行方法。在本节中,我们将向你展示如何以 phar 文件的形式添加工具。

在前面的章节中,我们已经接触过 phar。它是 PHP Archive(PHP 档案)的缩写,可以看作是单个文件中的整个 PHP 项目。从技术上讲,它是一个可自行执行的 ZIP 压缩包,其中包含应用程序的源代码以及所有必要的依赖项。它的最大优点是下载后可立即使用所需代码,因此你可以立即使用任何 phar 文件,而无需关心 Composer 或依赖关系。此外,所有现代 PHP 版本都支持 phar 文件。

这使得 phar 文件的使用非常方便,因为你可以像对待二进制文件一样对待它们。通常,你可以直接以 phar 文件的形式下载我们之前介绍过的许多 PHP 工具,并将它们放在你想要的任何目录下。不过,这些文件的提供方式并不统一,所以请参考每个工具的官方文档。

让我们看看在第 7 章 "代码质量工具" 中介绍过的 phploc 工具如何做到这一点。根据它的 GitHub 仓库,你可以从 PHPUnit 网站下载它,因为它们出自同一作者之手。下面的代码片段展示了如何做到这一点:

$ wget https://phar.phpunit.de/phploc.phar -O phploc

请注意,我们安装的工具名称是 phploc,而不是 phploc.phar-O 选项允许你指定一个与下载文件不同的文件名。执行工具时不需要 .phar 扩展名,因此可以省去一些键入工作。

文件和校验和

从互联网上下载和执行文件总是存在被破坏和感染恶意代码的风险。因此,工具的作者通常会生成下载文件的校验和(例如,通过哈希算法,如安全哈希算法 256 (SHA256)),并在其网站上公布,以便你可以使用它们来验证下载文件的完整性。请查看你考虑使用的工具的官方网站,了解它们是否提供校验和,以及如何验证校验和。

当然,你可以使用任何你喜欢的方法下载它,无论是 curl 还是通过浏览器。下载完成后,可以立即使用本地 PHP 安装程序运行它,就像这样:

$ php phploc src

如果不想每次都键入 php,就需要将 phar 文件设置为可执行文件,例如,在 Linux 上,它看起来就像这样:

$ chmod +x phploc

之后,只需运行以下命令即可执行 phploc

$ ./phploc src

让你的 Phar 文件井井有条

现在,我们不仅要下载 phar 文件,还要将它们整理到我们的项目中,这样其它开发人员在使用它们之前就无需进行任何手动操作。最明显的选择就是将这些文件添加到版本库中,这正是我们现在要研究的。在下面的示例中,我们将使用 Git,但这种方法也适用于任何其它 版本控制系统(VCS)

一般不建议在 Git 中存储大文件,因为它们会对性能产生负面影响。例如,GitHub 会阻止超过 100 MB 的文件。不过,我们使用的 phar 文件通常只有几 MB 大小,所以添加它们应该不会有任何负面影响。

Git 大文件存储(Git LFS)

如果需要在 Git 中存储大文件,可以考虑使用 Git LFS。不过,根据我们的需要,我们并不需要使用它。

你可以自由选择在项目中添加 phar 文件的位置。常见的位置是根文件夹;不过,随着时间的推移,这里会变得相当拥挤,因此我们建议使用单独的文件夹来存储它们。工具文件夹也是一个不错的地方,就像我们在上一节中使用的那样。你不需要考虑其它任何事情,只需将它们像其它文件一样添加到资源库中即可。

假设你将 phploc 文件复制到了工具文件夹中,并按照之前的描述使其可执行。然后,只需执行如下操作即可:

$ tools/phploc src

使用 phar 文件非常简单,而且不会影响应用程序的依赖性。然而,它们并不完美:如果要更新它们,每次都需要查找下载统一资源定位器(URL)、下载 phar 文件并手动验证其校验和。在下一节中,我们将向你介绍如何通过引入另一种依赖关系管理工具来简化这一过程: Phive