如何安装和在Ubuntu 16.04使用Composer

Composer是PHP流行的依赖管理工具,建立以方便安装和更新项目的依赖。它会检查该包等特定项目依赖并安装它们对你来说,使用根据项目要求的相应版本。

介绍

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 输出应如下所示:

All 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

你应该得到类似这样的输出:

   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
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”,你会得到类似的结果:

Packagist搜索:easy-slug / easy-slug,松饼/ slug,ddd / slug,zelenin / slug,webcastle / slug,anomaly / slug-field_type

您会在列表中每个包的右侧看到两个数字。 顶部的数字表示软件包的安装次数,底部的数字表示软件包在GitHub上加载了多少次。 您可以根据这些数字重新排序搜索结果(查找搜索栏右侧的两个图标)。 一般来说,具有更多安装和更多星形的包通常更稳定,因为这么多人正在使用它们。 检查包描述是否相关也很重要 - 这是否真的是你想要的?

我们需要的是一个简单的字符串到slug转换器。 从搜索结果中,包cocur/slugify似乎是一个很好的匹配,具有安装和恒星的合理费用。 (包是比屏幕截图显示的页面更下一页。)

你会发现,在Packagist的包有供应商名称和名称。 每个包都有相同格式的唯一标识符(命名空间)的GitHub用于其仓库: vendor/package 我们要安装库使用命名空间cocur/slugify 命名空间是我们需要为需要在我们的项目包。

需要一个包

现在,我们确切地知道我们要安装哪个包,我们可以运行composer require将它作为一个依赖,也产生了composer.json项目文件:

composer require cocur/slugify
Using 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.jsoncomposer.lockvendor目录:

ls -l
total 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.jsoncomposer.lock文件。

当安装已包含一个项目composer.json文件,你需要运行composer install ,以便下载该项目的依赖。

了解版本限制

如果您检查的内容composer.json文件,你会看到这样的事情:

cat composer.json
{
    "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
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包。