介绍
Composer是 PHP 的一种流行的依赖管理工具,主要用于方便项目依赖的安装和更新。Composer 通过检查具体项目依赖的其他软件包,然后根据项目要求为您安装相应的版本。Composer 也常用来启动基于流行的 PHP 框架的新项目,如 Symfony和 Laravel。
在本指南中,您将在 Debian 11 服务器上安装和使用 Composer。
前提条件
要遵循本教程,您将需要一个 Debian 11 服务器设置,包括一个非root sudo
功能的用户和启用防火墙。
步骤 1 - 安装依赖
除了可能已经包含在您的 Debian 11 系统中的依赖之外,Composer 还需要php-cli
来执行命令行中的 PHP 脚本,以及unzip
来提取 zip 档案。
首先,更新包管理器的缓存:
1sudo apt update
接下来,安装依赖程序. 你需要弯曲
来下载Composer和php-cli
来安装和运行它. php-mbstring
包是必要的,以提供您将在本教程中使用的库的功能。 git
是由Composer用于下载项目依赖程序,而unzip
是用于提取包。
1sudo apt install curl php-cli php-mbstring git unzip
有了所有依赖程序的安装,您现在可以安装 Composer。
步骤 2 – 下载和安装 Composer
Composer 提供一个以 PHP 编写的 installer,您将下载它,验证它没有被破坏,然后使用它来安装 Composer。
首先,确保你在你的家庭目录:
1cd ~
然后,使用curl
来获取安装程序:
1curl -sS https://getcomposer.org/installer -o composer-setup.php
接下来,请验证安装程序是否匹配了 Composer Public Keys / Signatures页面上发现的最新安装程序的 SHA-384 哈希。
1HASH=`curl -sS https://composer.github.io/installer.sig`
要输出所获得的值,运行:
1echo $HASH
1[secondary_label Output]
255ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae
现在,按照Composer 下载页面提供的下面的PHP代码执行,以验证安装脚本是否安全运行:
1php -r "if (hash_file('SHA384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
您的输出将如下:
1[secondary_label Output]
2Installer verified
如果你收到一个消息说安装程序破坏
,你需要下载安装脚本再次,并验证你使用正确的哈希.然后运行命令再次验证安装程序。
若要在全球范围内安装composer
,请使用以下命令下载和安装Composer
作为名为composer
的整个系统命令在/usr/local/bin
下:
1sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
您的输出将如下:
1[secondary_label Output]
2All settings correct for using Composer
3Downloading...
4
5Composer (version 2.3.10) successfully installed to: /usr/local/bin/composer
6Use it: php /usr/local/bin/composer
通过运行此命令来测试您的安装:
1composer
然后,输出将显示 Composer 的版本和参数,类似于以下:
1[secondary_label Output]
2 ______
3 / ____/___ ____ ___ ____ ____ ________ _____
4 / / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
5/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
6\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
7 /_/
8Composer version 2.3.10 2022-07-13 15:48:23
9
10Usage:
11 command [options] [arguments]
12
13Options:
14 -h, --help Display help for the given command. When no command is given display help for the list command
15 -q, --quiet Do not output any message
16 -V, --version Display this application version
17 --ansi|--no-ansi Force (or disable --no-ansi) ANSI output
18 -n, --no-interaction Do not ask any interactive question
19 --profile Display timing and memory usage information
20 --no-plugins Whether to disable plugins.
21 --no-scripts Skips the execution of all scripts defined in composer.json file.
22 -d, --working-dir=WORKING-DIR If specified, use the given directory as working directory.
23 --no-cache Prevent use of the cache
24 -v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
25. . .
这验证了 Composer 已成功安装在您的系统上,并在整个系统中可用。
<$>[note] 注: 如果您喜欢为您托管在该服务器上的每个项目设有单独的 Composer 执行程序,您可以本地安装它,每个项目的基础上。
要做到这一点,请使用php composer-setup.php
命令,在当前目录中生成一个composer.phar
文件,可以用./composer.phar
命令执行。
现在你已经安装了 Composer,下一步你将学习如何使用 Composer 来管理 PHP 依赖。
步骤 3 — 在 PHP 项目中使用 Composer
PHP 项目往往依赖于外部库,管理这些依赖和它们的版本可能很困难. Composer 通过跟踪您的依赖来解决这个问题,并使其他人更容易安装它们。
要在您的项目中使用 Composer,您需要一个 composer.json
文件。 composer.json
文件告诉 Composer 需要为您的项目下载的依赖,以及允许安装的每个软件包的版本。
您不需要手动创建此文件,因为这样做容易出现错误,并可能导致语法错误。Composer在使用composer require
命令为项目添加依赖时,会自动生成composer.json
文件。
使用 Composer 作为项目中的依赖程序安装包的过程包括以下步骤:
- 确定应用程序需要哪种类型的库。
- 在 Packagist.org上搜索合适的开源库,该库是Composer的官方包库。
- 选择您想要依赖的包。
*运行
composer require
以将依赖包含在composer.json
文件中,然后安装包。
您可以通过Demo应用程序来测试这一点。
该应用程序的目的是将一个特定的句子转换成一个称为 slug 的 URL 友好的字符串,一个 slug 通常用于将页面标题转换为 URL 路径,例如本教程的 URL 最终部分。
开始导航到您的家庭目录:
1cd ~
然后创建一个目录,称之为slugify
:
1mkdir slugify
完成创建后,更改到目录:
1cd slugify
现在是时候搜索 Packagist.org 找一个可以帮助生成 slugs 的包. 如果你在 Packagist 上搜索slug
术语,你会得到类似于以下的结果:
在列表中,每个包的右侧将有两个数字。向下指示箭头的图标旁边的号码代表了该包安装了多少次,星座图标的号码代表了该包在 GitHub上被标记了多少次)。你也可以根据这些号码重新排序搜索结果。一般来说,具有更多安装和更多星星的包往往更稳定,因为有这么多人正在使用它们。
对于本教程,你需要一个 string-to-slug 转换器. 从搜索结果中,包 cocur/slugify
是一个很好的匹配,有合理的数量的安装和星星。
Packagist 上的包有 **供应商名称和 ** 包的名称.每个包都有一个独特的标识符(一个名称空间)在 GitHub 用于其存储库的相同格式中,以供应商/包
的形式。
现在你知道你要安装的软件包,运行composer require
,将其列入成依赖,并为该项目生成composer.json
文件:
1composer require cocur/slugify
您的输出将在 Composer 下载依赖时返回以下内容:
1[secondary_label Output]
2Using version ^4.1 for cocur/slugify
3./composer.json has been created
4Running composer update cocur/slugify
5Loading composer repositories with package information
6Updating dependencies
7Lock file operations: 1 install, 0 updates, 0 removals
8 - Locking cocur/slugify (v4.1.0)
9Writing lock file
10Installing dependencies from lock file (including require-dev)
11Package operations: 1 install, 0 updates, 0 removals
12 - Downloading cocur/slugify (v4.1.0)
13 - Installing cocur/slugify (v4.1.0): Extracting archive
14Generating autoload files
如果您现在检查您的项目目录,它将包含两个新文件: composer.json
和 composer.lock
,以及一个 供应商
目录:
1ls -l
1[secondary_label Output]
2total 12
3-rw-r--r-- 1 sammy sammy 59 Aug 2 22:19 composer.json
4-rw-r--r-- 1 sammy sammy 3462 Aug 2 22:19 composer.lock
5drwxr-xr-x 4 sammy sammy 4096 Aug 2 22:19 vendor
composer.lock
文件用于存储有关每个安装的软件包的版本的信息,并且确保在其他人克隆您的项目并安装其依赖性时使用相同的版本。 供应商
目录是项目依赖性所在的位置。 供应商
文件夹不需要参与版本控制,您只需要包含composer.json
和composer.json
锁文件。
<$>[注]
在安装已包含 composer.json
文件的项目时,请运行 composer install
以下载该项目的依赖性。
接下来,检查版本限制. 如果你检查你的 composer.json
文件的内容,你会得到这样的东西:
1cat composer.json
1[secondary_label Output]
2{
3 "require": {
4 "cocur/slugify": "^4.1"
5 }
6}
在composer.json中,您可能会在版本号之前注意到特殊字符 ^
。Composer 支持多个不同的限制和格式来定义所需的包版本,以便提供灵活性,同时保持项目稳定性。由自动生成的 composer.json 文件使用的 caret (
^`) 操作员是建议的操作员,以实现最大限度的互操作性,然后是 语义版本。
一般来说,您不需要在composer.json
文件中对版本限制进行篡改,但有些情况可能需要您手动编辑该限制,例如,当您发布所需库的主要新版本并想要升级时,或者当您想要使用的库不遵循语义版本。
以下是几个例子,以便您更好地了解 Composer 版本限制如何工作:
Constraint | Meaning | Example Versions Allowed |
---|---|---|
^1.0 | >= 1.0 < 2.0 | 1.0, 1.2.3, 1.9.9 |
^1.1.0 | >= 1.1.0 < 2.0 | 1.1.0, 1.5.6, 1.9.9 |
~1.0 | >= 1.0 < 2.0.0 | 1.0, 1.4.1, 1.9.9 |
~1.0.0 | >= 1.0.0 < 1.1 | 1.0.0, 1.0.4, 1.0.9 |
1.2.1 | 1.2.1 | 1.2.1 |
1.* | >= 1.0 < 2.0 | 1.0.0, 1.4.5, 1.9.9 |
1.2.* | >= 1.2 < 1.3 | 1.2.0, 1.2.3, 1.2.9 |
有关 Composer 版本限制的更深入的观点,请查看 官方文档。
接下来,您将学习如何使用 Composer 自动加载依赖。
步骤 4 – 包括 Autoload 脚本
由于PHP本身不会自动加载类,因此Composer提供了自动加载脚本,您可以将其纳入项目中,以便自动加载工作。
您唯一需要做的就是在任何类型的实例化之前,在您的PHP脚本中添加vendor/autoload.php
文件。
您可以在您的应用程序中测试它,创建test.php
文件,并在您喜欢的文本编辑器中打开它。
1nano test.php
添加以下代码来输入vendor/autoload.php
文件,加载cocur/slugify
依赖,然后创建 slug:
1[label test.php]
2<?php
3require __DIR__ . '/vendor/autoload.php';
4use Cocur\Slugify\Slugify;
5
6$slugify = new Slugify();
7
8echo $slugify->slugify('Hello World, this is a long sentence and I need to make a slug from it!');
如果您正在使用nano
,您可以通过按CTRL + X
,然后按Y
和ENTER
来做到这一点。
现在运行剧本:
1php test.php
这产生了以下产出:
1[secondary_label Output]
2hello-world-this-is-a-long-sentence-and-i-need-to-make-a-slug-from-it
当新版本发布时,依赖需要更新,因此您将在最后一步中学习如何处理。
步骤 5 – 更新项目依赖性
每当您想要将项目依赖性更新到更新的版本时,请运行更新
命令:
1composer update
这将检查您在项目中添加的库的更新的版本作为要求。如果发现了更新的版本,并且它与composer.json
文件中定义的版本限制相兼容,Composer 将取代之前安装的版本。
您也可以通过以下方式指定一个或多个特定库来更新它们:
1composer update vendor/package vendor2/package2
请确保在更新依赖性后对您的composer.json
和composer.lock
文件进行更改,以便在项目中工作的任何人都可以访问相同的软件包版本。
结论
Composer 是一个强大的工具,每个 PHP 开发人员都应该在他们的工具带中。 在本教程中,你在 Debian 11 上安装了 Composer,并在一个项目中使用了它。
除了提供可靠的方式来管理项目依赖之外,Composer还为共享和发现社区创建的PHP包设立了新的标准。