如何在 Ubuntu 16.04 上安装和使用 Composer

介绍

Composer是 PHP 的一种流行的 dependence management 工具,主要用于方便项目依赖的安装和更新,它会检查一个特定的项目依赖哪些其他包,并为您安装它们,根据项目要求使用相应的版本。

本教程将解释如何在Ubuntu 16.04系统上安装并开始使用Composer。

前提条件

对于这个教程,你将需要:

  • 运行 Ubuntu 16.04 系统
  • sudo 许可证 作为常规用户访问服务器

步骤 1 - 安装依赖

在下载和安装 Composer 之前,我们需要确保我们的服务器安装了所有依赖。

首先,更新包管理器缓存,运行:

1sudo apt-get update

现在,让我们安装依赖程序。我们需要‘curl’来下载Composer和‘php-cli’来安装和运行它。‘php-mbstring’包是为我们使用的库提供功能所必需的。‘git’是由Composer用于下载项目依赖程序,而‘unzip’是用于提取包。

1sudo apt-get install curl php-cli php-mbstring git unzip

现在你可以继续到下一步。

步骤 2 – 下载和安装 Composer

Composer 提供了一个安装程序,用 PHP 编写。 请确保您在您的主目录中,并使用 curl 获取安装程序:

1cd ~
2curl -sS https://getcomposer.org/installer -o composer-setup.php

接下来,运行一个简短的PHP脚本来验证安装程序是否匹配SHA-384对最新安装程序的哈希在 Composer Public Keys / Signatures页面上。

1php -r "if (hash_file('SHA384', 'composer-setup.php') === '669656bab3166a7aff8a7506b8cb2d1c292f042046c5a994c43155c0be6190fa0355160742ab2e1c88d40d5be660b410') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
1[label Output]
2Installer verified

要在全球范围内安装composer,请使用以下方法:

1sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer

这将下载并安装Composer作为名为composer的整个系统命令,在/usr/local/bin下。

1[secondary_label Output]
2All settings correct for using Composer
3Downloading 1.1.1...
4
5Composer successfully installed to: /usr/local/bin/composer
6Use it: php /usr/local/bin/composer

要测试您的安装,运行:

1composer

你应该得到类似于此的输出:

 1[secondary_label Output]
 2   ______
 3  / ____/___ ____ ___ ____ ____ ________ _____
 4 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
 5/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
 6\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
 7                    /_/
 8Composer version 1.1.1 2016-05-17 12:25:44
 9
10Usage:
11  command [options] [arguments]
12
13Options:
14  -h, --help Display this help message
15  -q, --quiet Do not output any message
16  -V, --version Display this application version
17      --ansi Force ANSI output
18      --no-ansi Disable ANSI output
19  -n, --no-interaction Do not ask any interactive question
20      --profile Display timing and memory usage information
21      --no-plugins Whether to disable plugins.
22. . .

这意味着 Composer 已成功安装在您的系统上。

<$>[注] 如果您更愿意为您在这个服务器上托管的每个项目设有单独的 Composer 执行程序,您可以简单地在本地安装,每个项目的基础上。

在这种情况下,安装可以完成,下载并验证上面的安装脚本后,如下:

1php composer-setup.php

这将在当前目录中生成一个composer.phar文件,可以使用./composer.phar命令执行。

步骤 3 — 生成 composer.json 文件

要在您的项目中使用 Composer,您需要一个composer.json文件。composer.json文件基本上告诉 Composer 需要下载您的项目的依赖性,并且允许安装每个软件包的版本。

您不需要手动创建此文件 - 当您这样做时,很容易遇到语法错误。Composer 在使用要求命令将依赖性添加到项目时,会自动生成composer.json文件。

使用 Composer 作为项目中的依赖程序安装包的过程通常涉及以下步骤:

  • 确定应用程序需要哪种类型的库
  • Packagist.org上搜索合适的开源库,该库是Composer 的官方包库* 选择您希望依赖 的包*运行composer require以将依赖包含在composer.json文件中,并安装包

我们将看到如何在实践中使用简单的演示应用程序。

该应用程序的目的是将一个特定的句子转化为一个URL友好的字符串 - 一个 slug. 这通常用于将页面标题转换为URL路径(如本教程的URL的最终部分)。

让我们开始为我们的项目创建一个目录,我们将其称为 slugify :

1cd ~
2mkdir slugify
3cd slugify

在 Packagist 上搜索包裹

现在是时候搜索 Packagist.org 一个可以帮助我们生成 slugs 的包。

Packagist Search: easy-slug/easy-slug, muffin/slug, ddd/slug, zelenin/slug, webcastle/slug, anomaly/slug-field_type

在列表中,你会看到每个包的右侧的两个数字。 顶部的数字代表了该包安装了多少次,而底部的数字显示了一个包在GitHub上出现了多少次。 你可以根据这些数字重新排序搜索结果(搜索搜索栏的右侧的两个图标)。

我们需要的是一个简单的 string-to-slug 转换器. 从搜索结果中,包 cocur/slugify 似乎是一个很好的匹配,有相当数量的安装和星星。

您会注意到 Packagist 上的包有 **供应商名称和 ** 包的名称. 每个包都有一个独特的标识符(名称空间)在 GitHub 用于其存储库的相同格式中: vendor/package. 我们要安装的库使用名称空间 cocur/slugify. ** 名称空间是我们需要的,以便在我们的项目中要求包。

要求一包

现在我们知道我们想要安装哪个软件包,我们可以运行composer require,将其列入成依赖,并为该项目生成composer.json文件:

1composer require cocur/slugify
 1[secondary_label Output]
 2Using version ^2.1 for cocur/slugify
 3./composer.json has been created
 4Loading composer repositories with package information
 5Updating dependencies (including require-dev)
 6  - Installing cocur/slugify (v2.1.1)
 7    Downloading: 100%         
 8
 9Writing lock file
10Generating autoload files

正如您可以从输出中看到的,Composer 会自动决定使用哪个版本的包. 如果您现在检查项目的目录,它将包含两个新的文件:composer.json 和 composer.lock,以及一个供应商目录:

1ls -l
1[secondary_label Output]
2total 12
3-rw-rw-r-- 1 sammy sammy 59 May 17 10:24 composer.json
4-rw-rw-r-- 1 sammy sammy 2894 May 17 10:24 composer.lock
5drwxrwxr-x 4 sammy sammy 4096 May 17 10:24 vendor

composer.lock文件用于存储有关每个软件包安装的版本的信息,并确保如果有人克隆您的项目并安装其依赖性时使用相同的版本。

<$>[注] 在安装一个已经包含composer.json文件的项目时,您需要运行composer install来下载该项目的依赖。

理解版本限制

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

1cat composer.json
1[secondary_label Output]
2{
3    "require": {
4        "cocur/slugify": "^2.1"
5    }
6}

在composer.json中,您可能会在版本号之前注意到特殊字符 ^。Composer 支持多个不同的限制和格式来定义所需的包版本,以便提供灵活性,同时保持项目稳定性。由自动生成的 composer.json 文件使用的 caret (^`) 操作员是建议的操作员,以获得最大程度的互操作性,然后是 语义版本

一般来说,您不需要在您的 composer.json 文件中篡改版本限制,但有些情况可能需要您手动编辑这些限制 - 例如,当您发布所需库的主要新版本并希望升级时,或者当您想要使用的库不遵循语义版本。

以下是几个例子,以便您更好地了解 Composer 版本限制如何工作:

ConstraintMeaningExample Versions Allowed
^1.0>= 1.0 < 2.01.0, 1.2.3, 1.9.9
^1.1.0>= 1.1.0 < 2.01.1.0, 1.5.6, 1.9.9
~1.0>= 1.0 < 2.0.01.0, 1.4.1, 1.9.9
~1.0.0>= 1.0.0 < 1.11.0.0, 1.0.4, 1.0.9
1.2.11.2.11.2.1
1.*>= 1.0 < 2.01.0.0, 1.4.5, 1.9.9
1.2.*>= 1.2 < 1.31.2.0, 1.2.3, 1.2.9

有关 Composer 版本限制的更深入的观点,请阅读 官方文档

步骤 4 – 包括 Autoload 脚本

由于PHP本身不自动处理类的加载,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

这应该产生Hello-world-this-is-a-long-sentence-and-i-need-to-make-a-slug-from-it的输出。

步骤 5 – 更新项目依赖

每当您想要更新项目依赖性时,您只需运行更新命令:

1composer update

这将检查您在项目中所需的库的更新的版本。如果发现了更新的版本,并且它与composer.json文件中定义的版本限制相兼容,它将取代之前安装的版本。

您也可以通过运行一个或多个特定库来更新:

1composer update vendor/package vendor2/package2

结论

本教程涵盖了在Ubuntu 16.04上开始使用Composer的基本知识,Composer是一个强大的工具,每个PHP开发人员都应该在他们的实用带中。

除了提供一个简单可靠的方式来管理项目依赖性之外,它还为共享和发现社区创建的PHP包建立了一个新的事实标准。

Published At
Categories with 技术
comments powered by Disqus