介绍
Composer是PHP流行的依赖管理工具,建立主要是为了方便安装和更新项目的依赖。 它将检查特定项目所依赖的其他包,并为您安装它们,根据项目要求使用适当的版本。
本教程将解释如何在Ubuntu 16.04系统上安装和开始使用Composer。
先决条件
对于本教程,您将需要:
- 运行Ubuntu 16.04的系统
- 访问服务器作为一个普通用户sudo的权限
第1步 - 安装依赖关系
在我们下载并安装Composer之前,我们需要确保我们的服务器已安装所有依赖项。
首先,通过运行以下命令更新包管理器高速缓存:
sudo apt-get update
现在,让我们安装依赖项。 我们需要curl
,以下载Composer和php-cli
安装和运行它。 在php-mbstring
包装是必要的,因为我们将要使用的库提供的功能。 git
所使用的Composer下载项目依赖,并unzip
提取压缩包。 一切都可以使用以下命令安装:
sudo apt-get install curl php-cli php-mbstring git unzip
您现在可以继续下一步。
第2步 - 下载并安装Composer
Composer提供了一个用PHP编写的安装程序。 确保你在你的home目录里,并使用检索安装curl
:
cd ~
curl -sS https://getcomposer.org/installer -o composer-setup.php
接下来,运行一个简短的PHP脚本,以确认安装程序的SHA-384散列上找到最新的安装相匹配Composer公钥/签名页。 您需要确保将最新的哈希替换为以下高亮显示的值:
php -r "if (hash_file('SHA384', 'composer-setup.php') === '92102166af5abdb03f49ce52a40591073a7b859a86e8ff13338cf7db58a19f7844fbc0bb79b2773bf30791e935dbd938') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
Installer verified
要安装composer
全球范围内,使用以下命令:
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
这将下载并安装Composer作为一个全系统的命令命名的composer
,下/usr/local/bin
。 输出应如下所示:
OutputAll settings correct for using Composer
Downloading 1.1.1...
Composer successfully installed to: /usr/local/bin/composer
Use it: php /usr/local/bin/composer
要测试安装,请运行:
composer
你应该得到类似这样的输出:
Output ______
/ ____/___ ____ ___ ____ ____ ________ _____
/ / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
/_/
Composer version 1.1.1 2016-05-17 12:25:44
Usage:
command [options] [arguments]
Options:
-h, --help Display this help message
-q, --quiet Do not output any message
-V, --version Display this application version
--ansi Force ANSI output
--no-ansi Disable ANSI output
-n, --no-interaction Do not ask any interactive question
--profile Display timing and memory usage information
--no-plugins Whether to disable plugins.
. . .
这意味着Composer已成功安装在系统上。
如果您喜欢为在此服务器上托管的每个项目提供单独的Composer可执行文件,则可以在每个项目的基础上在本地进行简单安装。 NPM的用户将熟悉这种方法。 当系统用户没有在系统范围内安装软件的权限时,此方法也很有用。
在这种情况下,可以在下载并验证上述安装脚本后进行安装,如下所示:
php composer-setup.php
这将产生一个composer.phar
在当前目录下,它可以与执行文件./composer.phar command
。
第3步 - 生成composer.json文件
为了在项目中使用的Composer,你需要一个composer.json
文件。 该composer.json
文件主要是告诉Composer哪些依赖它需要下载为您的项目,而且每个包的版本允许安装。 这是非常重要的,以保持您的项目一致,并避免安装不稳定的版本,可能会导致向后兼容性问题。
您不需要手动创建此文件 - 当您这样做时很容易遇到语法错误。 Composer自动生成composer.json
当您使用添加依赖到项目文件require
的命令。 还可以以相同的方式添加其他依赖项,而无需手动编辑此文件。
使用Composer将软件包作为依赖项安装在项目中的过程通常包括以下步骤:
- 确定应用程序需要什么类型的库
- 研究合适的开源库Packagist.org ,Composer官方包库
- 选择您要依赖的包
- 运行
composer require
包括在依赖composer.json
文件和安装包
我们将使用一个简单的演示应用程序来了解这是如何工作的。
此应用程序的目的是给定的句子转换成一个URL字符串友好- 蛞蝓 。 这通常用于将页面标题转换为URL路径(如本教程的URL的最后部分)。
让我们开始为我们的项目创建一个目录。 我们将slugify调用它:
cd ~
mkdir slugify
cd slugify
在Packagist上搜索Packages
现在是时候来搜索Packagist.org为一个包,可以帮助我们产生蛞蝓 。 如果你在Packagist上搜索术语“slug”,你会得到类似的结果:
您会在列表中每个包的右侧看到两个数字。 顶部的数字表示软件包的安装次数,底部的数字表示软件包在GitHub上加载了多少次。 您可以根据这些数字重新排序搜索结果(查找搜索栏右侧的两个图标)。 一般来说,具有更多安装和更多星形的包通常更稳定,因为这么多人正在使用它们。 检查包描述是否相关也很重要 - 这是否真的是你想要的?
我们需要的是一个简单的字符串到slug转换器。 从搜索结果中,包cocur/slugify
似乎是一个很好的匹配,具有安装和恒星的合理费用。 (包是比屏幕截图显示的页面更下一页。)
你会发现,在Packagist的包有供应商名称和包名称。 每个包都有相同格式的唯一标识符(命名空间)的GitHub用于其仓库: vendor/package
。 我们要安装库使用命名空间cocur/slugify
命名空间是我们需要为需要在我们的项目包。
需要一个包
现在,我们确切地知道我们要安装哪个包,我们可以运行composer require
将它作为一个依赖,也产生了composer.json
项目文件:
composer require cocur/slugify
OutputUsing version ^2.1 for cocur/slugify
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
- Installing cocur/slugify (v2.1.1)
Downloading: 100%
Writing lock file
Generating autoload files
从输出中可以看到,Composer自动决定应该使用哪个版本的软件包。 如果你现在检查你的项目目录,它将包含两个新文件: composer.json
和composer.lock
和vendor
目录:
ls -l
Outputtotal 12
-rw-rw-r-- 1 sammy sammy 59 May 17 10:24 composer.json
-rw-rw-r-- 1 sammy sammy 2894 May 17 10:24 composer.lock
drwxrwxr-x 4 sammy sammy 4096 May 17 10:24 vendor
该composer.lock
文件用于存储有关所安装的每个包的版本的信息,并确保如果别人克隆你的项目,并安装它的依赖同样的版本使用。 该vendor
目录是项目依赖的位置。 该vendor
的文件夹不应该被提交到版本控制-你只需要包括composer.json和composer.lock文件。
当安装已包含一个项目composer.json
文件,你需要运行composer install
,以便下载该项目的依赖。
了解版本限制
如果您检查的内容composer.json
文件,你会看到这样的事情:
cat composer.json
Output{
"require": {
"cocur/slugify": "^2.1"
}
}
您可能会注意到特殊字符^
在版本号之前composer.json
。 Composer支持几种不同的约束和格式来定义所需的软件包版本,以提供灵活性,同时保持项目稳定。 插入符号( ^
通过自动生成的使用)运营商composer.json
文件是最大的互操作性建议的操作员,下面语义版本 。 在这种情况下,它定义2.1作为最小兼容版本,并且允许更新低于3.0的任何未来的版本。
一般来说,你将不再需要在您的版本约束篡改composer.json
文件。 但是,在某些情况下,可能需要手动编辑约束 - 例如,当所需库的主要新版本发布并且要升级时,或者当您要使用的库不遵循语义版本控制时。
以下是一些例子,让您更好地了解Composer版本约束的工作原理:
约束 | 含义 | 允许的示例版本 |
---|---|---|
^ 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版本约束的更深入了解,请阅读官方文档 。
第4步 - 包括自动加载脚本
由于PHP本身不会自动处理类的加载,Composer还提供了一个自动加载脚本,您可以将其包含在项目中以免费自动加载。 这使得它更容易使用您的依赖和定义自己的命名空间。
你需要做的唯一事情是包括vendor/autoload.php
在PHP脚本文件,任何类实例化之前。
让我们再回到slugify示例应用程序。 我们将用nano
来创建一个test.php
脚本,我们将使用cocur / slugify库:
nano test.php
<?php
require __DIR__ . '/vendor/autoload.php';
use Cocur\Slugify\Slugify;
$slugify = new Slugify();
echo $slugify->slugify('Hello World, this is a long sentence and I need to make a slug from it!');
您可以在命令行中使用以下命令运行脚本:
php test.php
这应该产生输出hello-world-this-is-a-long-sentence-and-i-need-to-make-a-slug-from-it
。
第5步 - 更新项目依赖关系
每当你想更新项目的依赖,你只需要运行update
命令:
composer update
这将检查您的项目中所需的库的较新版本。 如果发现新版本,它是用在定义的版本兼容约束composer.json
文件,它将替换安装以前的版本。 该composer.lock
文件将被更新,以反映这些变化。
您还可以通过运行以下命令来更新一个或多个特定库:
composer update vendor/package vendor2/package2
结论
本教程涵盖了在Ubuntu 16.04上开始使用Composer的基本知识。 Composer是每个PHP开发人员在其实用程序中应该具有的强大工具。
除了提供一种简单可靠的方式来管理项目依赖项,它还建立了一个新的事实标准,用于共享和发现社区创建的PHP包。