omposer是 PHP 的依赖管理器(如 npm 是节点.js pip是 Python)。
Composer 将提取项目所依赖的所有必需的 PHP 包,并为此管理它们。它用于所有现代 PHP 框架和平台,如 Laravel、Symfony、Drupal 和 Magento 2。
本教程将介绍在
先决条件
在继续之前,请确保您已满足以下要求:
以具有sudo 权限的用户登录
在
在 CentOS 上安装作曲家
执行以下步骤在
安装 PHP CLI(命令行接口)包和所有其他依赖项:
sudo dnf install php-cli php-json php-zip wget unzip
安装 PHP CLI 后,下载 Composer 安装程序脚本:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
上面的命令下载当前工作目录中命名的文件。composer-setup.php
通过将文件的哈希值与 Composer 公钥/签名页上的哈希值进行比较来验证数据完整性。SHA-384
以下wget命令从 Composer 的 Github 页面下载最新的 Composer 安装程序签名,并将其存储在名为 的变量中:HASH
HASH="$(wget -q -O - https://composer.github.io/installer.sig)"
要验证安装脚本未损坏,请运行以下命令:
php -r "if (hash_file('SHA384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
如果哈希匹配,将显示以下消息:
Installer verified
否则,如果哈希不匹配,您将看到 。验证完整性后,继续执行下一步。Installer corrupt
运行以下命令在目录中安装 Composer:/usr/local/bin
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
上述命令作为系统范围命令安装,可供所有用户使用。输出将看起来像这样composer
All settings correct for using Composer
Downloading...
Composer (version 1.10.1) successfully installed to: /usr/local/bin/composer
Use it: php /usr/local/bin/composer
上述命令作为系统范围命令安装,可供所有用户使用。composer
通过打印 Composer 的版本来验证安装:
composer -V
Composer version 1.10.1 2020-03-13 20:34:27
此时,您已成功在 CentOS 系统上安装 Composer,您可以开始使用它。
安装作曲家 [快速方法]
执行以下步骤,在
安装 PHP CLI 和 Zip:
sudo dnf install php-cli php-json php-zip curl unzip
下载卷曲的作曲家:
curl -sS https://getcomposer.org/installer |php
将Composer 文件移动到目录:/usr/local/bin
sudo mv composer.phar /usr/local/bin/composer
使用作曲家入门
现在 Composer 已安装在 CentOS 系统中,我们将向您展示如何在 PHP 项目中使用 Composer。
首先创建项目根目录并导航到它:
mkdir ~/my-first-composer-project
cd ~/my-first-composer-project
在此示例中,我们将使用名为 carbon 的 PHP 包创建一个打印当前时间的示例应用程序。
运行以下命令以初始化新的 Composer 项目并安装碳包:
composer require nesbot/carbon
sing version ^2.32 for nesbot/carbon
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 4 installs, 0 updates, 0 removals
- Installing symfony/translation-contracts (v2.0.1): Downloading (connecting..Downloading (100%)
- Installing symfony/polyfill-mbstring (v1.15.0): Downloading (100%)
- Installing symfony/translation (v5.0.6): Downloading (100%)
- Installing nesbot/carbon (2.32.1): Downloading (100%)
symfony/polyfill-mbstring suggests installing ext-mbstring (For best performance)
symfony/translation suggests installing symfony/config
symfony/translation suggests installing symfony/yaml
symfony/translation suggests installing psr/log-implementation (To use logging capability in translator)
Writing lock file
Generating autoload files
3 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
从上面的输出中可以看到,Composer 将创建一个名为的文件并下载碳及其所有依赖项。composer.json
如果列出项目的目录,则会看到它包含两个文件和 ,以及一个目录。composer.jsoncomposer.lockvendor
ls -l
-rw-rw-r--. 1 vagrant vagrant 60 Mar 27 18:05 composer.json
-rw-rw-r--. 1 vagrant vagrant 11135 Mar 27 18:06 composer.lock
drwxrwxr-x. 6 vagrant vagrant 82 Mar 27 18:06 vendor
vendor是存储项目依赖项的目录。
该文件包含所有已安装包的列表,包括其版本。composer.lock
composer.json是描述 PHP 项目的文件,包括 PHP 依赖项和其他元数据。
您可以在 Composer 存储库Packagist 中搜索PHP 包。
Composer 具有自动加载功能,允许您使用 PHP 类,而无需 或 语句。requireinclude
创建名为的文件并添加以下代码:testing.php
require __DIR__ . '/vendor/autoload.php';
use Carbon\Carbon;
printf("Now: %s", Carbon::now());
让我们一行一行地分析代码。
在打开 php 标记后的第一行中,我们包括自动加载所有库的文件。vendor/autoload.php
接下来,我们将别名化为 。最后一行使用碳方法打印当前时间。Carbon\CarbonCarbonnow
通过键入以下类型运行脚本:
php testing.php
输出应类似:
Now: 2020-03-27 22:12:26
稍后,如果您想要更新 PHP 包,只需运行:
composer update
上面的命令将检查已安装包的较新版本,如果找到较新版本,并且版本约束与中指定的版本匹配,Composer 将更新包。composer.json