介绍
Composer是PHP的一种流行的依赖管理工具,主要用于方便项目依赖的安装和更新,它会检查一个特定的项目依赖哪些其他包,并为您安装它们,根据项目要求使用相应的版本。
本教程将展示如何在 Debian 8 服务器上安装并开始使用 Composer。
前提条件
对于这个教程,你将需要:
- 一个 Debian 8 服务器与非 root sudo 用户,如 Debian 8 初始服务器设置
步骤 1 - 安装依赖
在下载和安装 Composer 之前,我们需要确保我们的服务器安装了所有必要的依赖。
首先,更新包管理器的缓存。
1sudo apt-get update
现在,让我们安装依赖程序。我们需要‘curl’来下载Composer和‘php5-cli’,一个PHP包,来安装和运行它。Composer使用‘git’,一个版本控制系统,来下载项目依赖程序。
1sudo apt-get install curl php5-cli git
现在基本依赖已安装,让我们继续安装Composer本身。
步骤 2 – 下载和安装 Composer
我们将按照 Composer’s Official Documentation中所写的指示进行操作,并在/usr/local/bin
下对 Composer 进行微小的修改,这将允许服务器上的每个用户使用 Composer。
下载安装程序到/tmp
目录。
1php -r "copy('https://getcomposer.org/installer', '/tmp/composer-setup.php');"
点击 Composer’s pubkeys and signatures page,然后复制顶部的 SHA-384 字符串,然后执行以下命令,以您复制的字符串代替 `sha_384_string。
1php -r "if (hash_file('SHA384', '/tmp/composer-setup.php') === 'sha_384_string') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('/tmp/composer-setup.php'); } echo PHP_EOL;"
此命令会检查您从 Composer 网站上下载的文件的哈希,如果匹配,则会打印 Installer verified . 如果不匹配,则会打印 ** Installer corrupt** ,在这种情况下,您应该双重检查您是否正确复制了 SHA-384 字符串。
接下来,我们将安装Composer。 要在/usr/local/bin
下全球安装它,我们将使用--install-dir
旗帜;--filename
告诉安装程序Composer的可执行文件的名称。
1sudo php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer
您将看到如下这样的消息:
1[secondary_label Output]
2All settings correct for using Composer
3Downloading...
4
5Composer (version 1.3.2) successfully installed to: /usr/local/bin/composer
6Use it: php /usr/local/bin/composer
您可以通过检查其版本来验证 Composer 是否正确安装。
1composer --version
您应该看到已安装的版本. 在此写作时,该版本是:
1[label Composer version]
2Composer version 1.3.2 2017-01-27 18:23:41
最后,您可以安全地删除安装程序脚本,因为您不再需要它。
1rm /tmp/composer-setup.php
Composer 现在已设置并运行,等待您的项目使用,在下一部分,您将生成 composer.json
文件,其中包括您项目依赖的 PHP 库。
步骤 3 — 生成 composer.json 文件
要为一个项目使用 Composer,你需要一个composer.json
文件。 该composer.json
文件告诉 Composer 需要为您的项目下载哪些依赖,并且允许安装每个软件包的版本。
您不需要手动创建此文件;如果您这样做,很容易遇到语法错误。Composer在使用要求
命令为您的项目添加依赖时自动生成composer.json
文件。
使用 Composer 作为项目中的依赖程序安装包的过程通常涉及以下步骤:
- 确定应用程序需要什么类型的库
- 在 Packagist.org上搜索合适的开源库,这是Composer
的官方存储库* 选择您希望依赖
的包*运行
composer require
以将依赖包含在composer.json
文件中,并安装 package
我们将看到如何在实践中使用简单的演示应用程序。
该应用程序的目的是将一个特定的句子转换为一个 slug,这是一个URL友好的字符串,用于将页面标题转换为URL路径(如本教程的URL的最终部分)。
让我们从创建一个项目目录开始,我们将其称为 slugify :
1cd ~
2mkdir slugify
3cd slugify
接下来,让我们去寻找我们需要使用的图书馆。
在 Packagist 上搜索包裹
接下来,我们将搜索 Packagist 一个包,以帮助生成 slug. 如果你搜索slug
,你会看到一个包的列表. 在列表中的每个包的右侧,你会看到两个数字:顶部的数字是包安装了多少次,而底部的数字显示了包在 GitHub 上被安装了多少次。
一般来说,具有更多安装和星星的包往往更稳定,因为许多人正在使用它们。
我们需要的是一个简单的 string-to-slug 转换器. 作为一个例子,我们将使用包 cocur/slugify
. 它似乎是一个很好的匹配,因为它有一个合理的数量的安装和星星。
您会注意到 Packagist 上的包有供应商名称和包名称. 每个包都有一个独特的标识符(名称空间)在 GitHub 用于其存储库的相同格式中: vendor/package
. 我们要安装的库使用名称空间 cocur/slugify
. 名称空间是我们需要的,以便在我们的项目中要求该包。
现在我们已经确定了我们想要的库,让我们将其添加到composer.json
文件中。
要求一包
我们可以运行composer require
以将库列为依赖,并为该项目生成composer.json
文件:
1composer require cocur/slugify
1[secondary_label Output]
2Using version ^2.3 for cocur/slugify
3./composer.json has been created
4Loading composer repositories with package information
5Updating dependencies (including require-dev)
6Package operations: 1 install, 0 updates, 0 removals
7 - Installing cocur/slugify (v2.3) Downloading: 100%
8Writing lock file
9Generating autoload files
正如您可以从输出中看到的,Composer 会自动决定使用哪个版本的包. 如果您现在检查您的项目目录,它将包含两个新的文件: composer.json
和 composer.lock
,以及一个 vendor/
目录:
1ls -l
1[secondary_label Output]
2total 12
3-rw-r--r-- 1 sammy sammy 59 Feb 1 13:43 composer.json
4-rw-r--r-- 1 sammy sammy 2896 Feb 1 13:43 composer.lock
5drwxr-xr-x 4 sammy sammy 4096 Feb 1 13:43 vendor
composer.lock
文件用于存储有关每个软件包安装的版本的信息,并确保如果其他人克隆您的项目并安装其依赖性时使用相同的版本。
<$>[注]
注: 安装已包含 composer.json
文件的项目时,需要运行 composer install
才能下载该项目的依赖性。
您可能会注意到composer.lock
文件包含有关我们项目所依赖的PHP库版本的具体信息。
理解版本限制
如果你检查你的composer.json
文件的内容,你会看到这样的东西:
1cat composer.json
1[label Output]
2{
3 "require": {
4 "cocur/slugify": "^2.3"
5 }
6}
Composer 支持多个不同的限制和格式来定义所需的软件包版本,以便提供灵活性,同时保持您的项目稳定。由自动生成的 composer.json
文件使用的 caret 操作员是建议的操作员,以实现最大程度的互操作性,然后是语义版本化。
到目前为止,我们已经看到如何使用composer.json
文件添加和限制我们项目所需的PHP库,下一步是实际使用这些库在我们的应用程序中。
步骤 4 – 包括 Autoload 脚本
Composer提供了一个自动加载脚本,您可以将其纳入您的项目,以便免费获得自动加载。这使您更容易与依赖性工作,并定义自己的命名空间。您唯一需要做的就是在任何类实例之前,将vendor/autoload.php
文件纳入您的PHP脚本。
使用nano
或您最喜欢的文本编辑器,创建一个test.php
脚本,我们将使用cocur/slugify
库。
1nano test.php
1[label test.php]
2<?php
3require __DIR__ . '/vendor/autoload.php';
4
5use Cocur\Slugify\Slugify;
6
7$slugify = new Slugify();
8
9echo $slugify->slugify('Hello World, this is a long sentence and I need to make a slug from it!');
您可以在命令行中运行脚本:
1php test.php
这应该产生产量:
1[secondary_label Output]
2hello-world-this-is-a-long-sentence-and-i-need-to-make-a-slug-from-it
您已经完全安装了 Composer,但继续阅读以了解如何维护安装。
步骤 5 — 更新作曲家和项目依赖(可选)
要更新 Composer 本身,您可以使用其提供的内置命令自我更新
。 由于 Composer 已在全球范围内安装,您需要使用根权限运行命令。
1sudo -H composer self-update
您可以更新一个或多个特定的库,具体列出它们的作曲家更新
。
1composer update namespace/package
如果您想要更新所有项目依赖,请运行更新
命令。
1composer update
这将检查您在项目中所需的库的更新的版本。如果发现了更新的版本,并且它与composer.json
文件中定义的版本限制相兼容,它将取代之前安装的版本。
结论
Composer 是一个强大的工具,每个 PHP 开发人员都应该在他们的实用带中。 除了提供一个易于和可靠的方式来管理项目依赖,它还为共享和发现社区创建的 PHP 包建立了一个新的事实标准。
在本教程中,我们简要介绍了Composer的基本知识:如何安装它,如何创建一个项目并为它找到套件,以及如何维护它。