如何在Debian 8上安装和使用Composer

介绍

Composer是PHP的一种流行的依赖关系管理工具,主要用于方便项目依赖项的安装和更新。 它将检查特定项目所依赖的其他包,并为您安装它们,根据项目要求使用适当的版本。

本教程将介绍如何在Debian 8服务器上安装和开始使用Composer。

先决条件

对于本教程,您将需要:

第1步 - 安装依赖关系

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

首先,更新包管理器高速缓存。

sudo apt-get update

现在,让我们安装依赖项。 我们需要curl来下载Composer和php5-cli ,一个PHP包,用于安装和运行它。 Composer使用git (版本控制系统)下载项目依赖项。 您可以使用此命令一次安装所有这三个软件包:

sudo apt-get install curl php5-cli git

现在已经安装了必要的依赖项,让我们继续并安装Composer本身。

第2步 - 下载并安装Composer

我们将按照Composer官方文档中的说明进行修改,以便在/usr/local/bin下全局安装Composer。 这将允许服务器上的每个用户使用Composer。

将安装程序下载到/tmp

php -r "copy('https://getcomposer.org/installer', '/tmp/composer-setup.php');"

访问Composer的公钥和签名页面 ,并复制顶部的SHA-384字符串。 然后,通过将sha_384_string sha_384_string为您复制的字符串,运行以下命令。

php -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网站中的正确哈希检查您下载的文件的哈希值。 如果匹配,它将打印安装程序已验证 如果它不匹配,它将打印安装程序损坏 ,在这种情况下,您应该仔细检查,您是否正确复制SHA-384字符串。

接下来,我们将安装Composer。 要在/usr/local/bin下全局安装它,我们将使用--install-dir标志; --filename告诉安装程序Composer的可执行文件的名称。 以下是在一个命令中执行此操作的方法:

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

您会看到类似以下的讯息:

OutputAll settings correct for using Composer
Downloading...

Composer (version 1.3.2) successfully installed to: /usr/local/bin/composer
Use it: php /usr/local/bin/composer

您可以通过检查Composer的版本来验证它是否正确安装。

composer --version

您应该看到安装的版本。 在写这篇文章的时候,版本是:

Composer版本
Composer version 1.3.2 2017-01-27 18:23:41

最后,您可以安全地删除安装程序脚本,因为您不再需要它。

rm /tmp/composer-setup.php

Composer现在已设置并运行,等待您的项目使用。 在下一节中,您将生成composer.json文件,其中包括项目依赖的PHP库。

第3步 - 生成composer.json文件

为了使用Composer作为项目,你需要一个composer.json文件。 composer.json文件告诉Composer它需要为您的项目下载哪些依赖项,以及允许安装每个软件包的哪些版本。 这对于保持项目一致性和避免安装可能会导致向后兼容性问题的不稳定版本很重要。

您不需要手动创建此文件; 它很容易遇到语法错误,如果你这样做。 当使用require命令向项目添加composer.json时,Composer自动生成composer.json文件。 还可以以相同的方式添加其他依赖关系,而无需手动编辑此文件。

使用Composer将软件包作为依赖项安装在项目中的过程通常包括以下步骤:

  • 确定应用程序需要什么类型的库
  • Packagist.org ,Composer的官方库中研究一个合适的开源库
  • 选择您要依赖的包
  • 运行composer requirecomposer.json文件中包含composer.json并安装软件包

我们将使用一个简单的演示应用程序来看看这是如何工作的。

这个应用程序的目标是将给定的句子转换为一个slug ,这是一个URL友好的字符串。 这用于将页面标题转换为URL路径(如本教程的URL的最后部分)。

让我们从为项目创建一个目录开始。 我们将其称为slugify

cd ~
mkdir slugify
cd slugify

接下来,让我们搜索我们需要使用的库。

在Packagist上搜索Packages

接下来,我们将搜索Packagist的包以帮助生成。。。 如果你搜索“slug”,你会看到一个包列表。 在列表中每个软件包的右侧,您将看到两个数字:顶部的数字是软件包安装的次数,底部的数字表示软件包在GitHub上加载了多少次。

一般来说,具有更多安装和星形的封装趋向于更稳定,因为许多人正在使用它们。 检查包的描述以确保包是否真的是你要找的东西也很重要。

我们需要的是一个简单的字符串到slug转换器。 在这里,我们将使用包cocur/slugify 它似乎是一个很好的匹配,因为它有合理的安装量和星星。

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

现在我们确定了我们想要的库,让我们将它添加到composer.json文件中。

需要一个包

我们可以运行composer require来包含库作为依赖项,并为项目生成composer.json文件:

composer require cocur/slugify
OutputUsing version ^2.3 for cocur/slugify
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
  - Installing cocur/slugify (v2.3) Downloading: 100%         
Writing lock file
Generating autoload files

从输出中可以看出,Composer自动决定应该使用哪个版本的软件包。 如果现在检查项目的目录,它将包含两个新文件: composer.jsoncomposer.lock ,以及一个vendor/目录:

ls -l
Outputtotal 12
-rw-r--r-- 1 sammy sammy   59 Feb  1 13:43 composer.json
-rw-r--r-- 1 sammy sammy 2896 Feb  1 13:43 composer.lock
drwxr-xr-x 4 sammy sammy 4096 Feb  1 13:43 vendor

composer.lock文件用于存储有关每个软件包的安装版本的信息,并确保在其他人克隆您的项目并安装其依赖项时使用相同的版本。 vendor/目录是项目依赖项所在的位置。 vendor/文件夹不应提交到版本控制; 你只需要包括composer.jsoncomposer.lock文件。

注意:当安装已经包含composer.json文件的项目时,需要运行composer install以下载项目的依赖项。

您可能会注意到composer.lock文件包括我们的项目依赖的PHP库版本的特定信息。 Composer使用特殊语法将库限制为特定版本。 让我们看看它是如何工作的。

了解版本限制

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

cat composer.json
输出
{
    "require": {
        "cocur/slugify": "^2.3"
    }
}

在版本号之前有一个插入符号, ^ Composer支持几种不同的约束和格式,用于定义所需的软件包版本,以便在保持项目稳定的同时提供灵活性。 自动生成的composer.json文件使用的插入符运算符是在语义版本化之后实现最大互操作性的推荐运算符。 在这种情况下,它将1.3定义为最低兼容版本,并允许更新低于2.0的任何未来版本。 您可以在Composer的版本控制文档中阅读有关版本原理的更多信息

到目前为止,我们已经了解了如何使用composer.json文件,通过Composer添加和限制项目所需的PHP库。 下一步是在我们的应用程序中实际使用这些库。 为此,Composer提供了autoload.php文件,便于加载外部库的过程。

第4步 - 包括自动加载脚本

Composer提供了一个自动加载脚本,您可以将其包含在项目中以免费自动加载。 这使得它更容易使用您的依赖和定义自己的命名空间。 你唯一需要做的是在任何类实例化之前在PHP脚本中包含vendor/autoload.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

这应该产生输出:

Outputhello-world-this-is-a-long-sentence-and-i-need-to-make-a-slug-from-it

您已完全设置了Composer,但请继续阅读,了解如何维护安装。

第5步 - 更新Composer和项目依赖关系(可选)

要更新Composer本身,您可以使用其提供的内置命令self-update 由于Composer是全局安装的,因此您需要以root权限运行该命令。

sudo -H composer self-update

您可以通过使用composer update具体列出来更新一个或多个特定库。

composer update namespace/package

如果要更新所有项目依赖项,请运行update命令。

composer update

这将检查您的项目中所需的库的较新版本。 如果找到较新的版本,并且它与composer.json文件中定义的版本约束composer.json ,它将替换安装的以前版本。 composer.lock文件将被更新以反映这些更改。

结论

Composer是每个PHP开发人员在其实用程序中应该具有的强大工具。 除了提供一种方便可靠的方式来管理项目依赖,它还建立了一个新的事实上的标准,用于共享和发现社区创建的PHP包。

在本教程中,我们简要介绍了Composer的基础知识:如何安装它,如何创建项目并为其找到包以及如何维护它。 要了解更多,您可以探索Composer官方文档

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏