介绍
Composer是PHP的一种流行的依赖管理工具,主要用于方便项目依赖的安装和更新,它会检查一个特定的项目依赖哪些其他包,并为您安装它们,根据项目要求使用相应的版本。
本教程将展示如何在 Ubuntu 14.04 服务器上安装并开始使用 Composer。
前提条件
对于这个教程,你将需要:
- 运行 Ubuntu 14.04 的服务器
- 以 sudo 许可证 作为常规用户访问服务器
步骤 1 - 安装依赖
在下载和安装 Composer 之前,我们需要确保我们的服务器安装了所有依赖。
首先,更新包管理器缓存,运行:
1sudo apt-get update
现在,让我们安装依赖性。我们需要‘curl’来下载Composer和‘php5-cli’来安装和运行它。‘git’是由Composer用于下载项目依赖性。
1sudo apt-get install curl php5-cli git
现在你可以继续到下一步。
步骤 2 – 下载和安装 Composer
Composer 安装非常简单,可以用一个命令完成:
1curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
这将下载并安装Composer作为名为composer
的整个系统命令,在/usr/local/bin
下。
1[secondary_label Output]
2#!/usr/bin/env php
3All settings correct for using Composer
4Downloading...
5
6Composer successfully installed to: /usr/local/bin/composer
7Use it: php /usr/local/bin/composer
要测试您的安装,运行:
1composer
你应该得到类似于此的输出:
1[secondary_label Output]
2 ______
3 / ____/___ ____ ___ ____ ____ ________ _____
4 / / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
5/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
6\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
7 /_/
8Composer version 1.0-dev (9859859f1082d94e546aa75746867df127aa0d9e) 2015-08-17 14:57:00
9
10Usage:
11 command [options] [arguments]
12
13Options:
14 --help (-h) Display this help message
15 --quiet (-q) Do not output any message
16 --verbose (-v|vv|vvv) Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
17 --version (-V) Display this application version
18 --ansi Force ANSI output
19 --no-ansi Disable ANSI output
20 --no-interaction (-n) Do not ask any interactive question
21 --profile Display timing and memory usage information
22 --working-dir (-d) If specified, use the given directory as working directory.
23
24. . .
这意味着 Composer 已成功安装在您的系统上。
<$>[注]
如果您喜欢在这个服务器上托管的每个项目都有单独的 Composer 可执行,您可以简单地在本地安装,每个项目的基础上。 这种方法在系统用户没有在整个系统上安装软件的权限时也是有用的。 在这种情况下,安装可以用 curl -sS https://getcomposer.org/installer Átha php
- 这将在当前目录中生成一个 composer.phar
文件,可以用 php composer.phar [command]
.
<$>执行
步骤 3 — 生成 composer.json 文件
要在您的项目中使用 Composer,您需要一个composer.json
文件。composer.json
文件基本上告诉 Composer 需要下载您的项目的依赖性,并且允许安装每个软件包的版本。
您不需要手动创建此文件 - 当您这样做时,很容易遇到语法错误。Composer 在使用要求
命令将依赖性添加到项目时,会自动生成composer.json
文件。
使用 Composer 作为项目中的依赖程序安装包的过程通常涉及以下步骤:
- 确定应用程序需要什么类型的库
- 在 Packagist.org上搜索合适的开源库,这是Composer
的官方存储库* 选择您希望依赖
的包*运行
composer require
以将依赖包含在composer.json
文件中,并安装 package
我们将看到如何在实践中使用简单的演示应用程序。
该应用程序的目的是将一个特定的句子转化为一个URL友好的字符串 - 一个 slug. 这通常用于将页面标题转换为URL路径(如本教程的URL的最终部分)。
让我们开始为我们的项目创建一个目录,我们将其称为 slugify :
1cd ~
2mkdir slugify
3cd slugify
在 Packagist 上搜索包裹
现在是时候搜索 Packagist.org 一个可以帮助我们生成 slugs 的包。
在列表中,你会看到每个包的右侧的两个数字。 顶部的数字代表了该包安装了多少次,而底部的数字显示了一个包在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 ^1.3 for cocur/slugify
3./composer.json has been created
4Loading composer repositories with package information
5Updating dependencies (including require-dev)
6 - Installing cocur/slugify (v1.3)
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 Sep 9 16:22 composer.json
4-rw-rw-r-- 1 sammy sammy 2835 Sep 9 16:22 composer.lock
5drwxrwxr-x 4 sammy sammy 4096 Sep 9 16:22 vendor
composer.lock
文件用于存储有关每个软件包安装的版本的信息,并确保如果有人克隆您的项目并安装其依赖性时使用相同的版本。
<$>[注]
在安装已经包含composer.json
文件的项目时,您需要运行composer install
来下载该项目的依赖性。
理解版本限制
如果你检查你的composer.json
文件的内容,你会看到这样的东西:
1cat composer.json
1[label composer.json]
2{
3 "require": {
4 "cocur/slugify": "^1.3"
5 }
6}
在composer.json上,您可能会在版本号之前注意到特殊字符 ^
。Composer 支持多个不同的限制和格式来定义所需的包版本,以便提供灵活性,同时保持项目稳定性。由自动生成的 composer.json 文件使用的 caret (
^`) 操作员是建议的操作员,以实现最大限度的互操作性,然后是 语义版本。
一般来说,您不需要在您的 composer.json
文件中篡改版本限制,但有些情况可能需要您手动编辑这些限制 - 例如,当您发布所需库的主要新版本并希望升级时,或者当您想要使用的库不遵循语义版本。
以下是几个例子,以便您更好地了解 Composer 版本限制如何工作:
Constraint | Meaning | Example Versions Allowed |
---|---|---|
^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 – 包括 Autoload 脚本
Composer 还提供了一个自动加载脚本,您可以将其纳入您的项目,以免费获得自动加载,这使您更容易与依赖性工作,并定义自己的名称空间。
您唯一需要做的就是将 vendor/autoload.php 文件纳入您的 PHP 脚本中,在任何类实例之前。
让我们回到 slugify 示例应用程序. 我们将创建一个 test.php
脚本,我们将使用 cocur/slugify 库:
1vim 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
结论
Composer 是一个强大的工具,每个 PHP 开发人员都应该在他们的实用带。
除了提供一个简单可靠的方式来管理项目依赖性之外,它还为共享和发现社区创建的PHP包建立了一个新的事实标准。
本教程涵盖了 Ubuntu 14.04 上开始使用 Composer 的基本知识。