在Ubuntu 16.04上安装和使用Composer的方法

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站

介绍

Composer 是一个流行的 PHP 依赖管理工具,主要用于简化项目依赖项的安装和更新。它会检查特定项目依赖的其他软件包,并根据项目要求使用适当的版本进行安装。

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

先决条件

在进行本教程之前,您需要:

  • 运行 Ubuntu 16.04 的系统
  • 以具有 sudo 权限的常规用户身份访问服务器

步骤 1 — 安装依赖项

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

首先,通过运行以下命令更新软件包管理器缓存:

sudo apt-get update

现在,让我们安装依赖项。我们需要 curl 以便下载 Composer,php-cli 用于安装和运行它,php-mbstring 包是必需的,以提供我们将使用的库的函数。git 用于下载项目依赖项,unzip 用于解压缩压缩包。您可以使用以下命令安装所有内容:

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

现在您可以继续下一步。

步骤 2 — 下载和安装 Composer

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

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

接下来,运行一个简短的 PHP 脚本来验证安装程序是否与 [Composer Public Keys / Signatures][composer-sigs] 页面上找到的最新安装程序的 SHA-384 哈希匹配。您需要确保将最新的哈希替换为下面突出显示的值:

php -r "if (hash_file('SHA384', 'composer-setup.php') === '669656bab3166a7aff8a7506b8cb2d1c292f042046c5a994c43155c0be6190fa0355160742ab2e1c88d40d5be660b410') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
安装程序已验证

要全局安装 composer,请使用以下命令:

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

这将在 /usr/local/bin 下下载并安装 Composer 作为名为 composer 的系统命令。输出应如下所示:

所有设置正确,可以使用 Composer
正在下载 1.1.1...

Composer 已成功安装到:/usr/local/bin/composer
使用: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 已成功安装在您的系统上。

在这种情况下,安装可以在下载和验证安装脚本后执行,如下所示:

php composer-setup.php

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

步骤 3 — 生成 composer.json 文件

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

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

使用 Composer 在项目中安装软件包作为依赖项通常涉及以下步骤:

  • 确定应用程序需要哪种类型的库
  • 在 Packagist.org 上研究适合的开源库,这是 Composer 的官方软件包存储库
  • 选择您想要依赖的软件包
  • 运行 composer require 将依赖项包含在 composer.json 文件中并安装软件包

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

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

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

cd ~
mkdir slugify
cd slugify

在 Packagist 上搜索包

现在是时候在 Packagist.org 上搜索一个可以帮助我们生成 slugs 的包了。如果你在 Packagist 上搜索 “slug” 这个词,你会得到类似于这样的结果:

!Packagist 搜索结果:easy-slug/easy-slug, muffin/slug, ddd/slug, zelenin/slug, webcastle/slug, anomaly/slug-field_type

你会在列表中每个包的右侧看到两个数字。顶部的数字代表该包被安装的次数,底部的数字显示了该包在 GitHub 上被 star 的次数。你可以根据这些数字重新排序搜索结果(在搜索栏右侧寻找两个图标)。一般来说,安装次数和 star 数更多的包往往更加稳定,因为有很多人在使用。同时,检查包的描述是否相关也很重要 - 这确实是你要找的吗?

我们需要的是一个简单的字符串转 slug 的工具。从搜索结果来看,包 cocur/slugify 似乎是一个很好的选择,安装次数和 star 数都还不错。(该包在页面上的位置比截图显示的稍微靠下一些。)

你会注意到 Packagist 上的包有一个 vendor 名称和一个 package 名称。每个包都有一个唯一的标识符(命名空间),格式与 GitHub 用于其仓库的格式相同:vendor/package。我们想要安装的库使用的命名空间是 cocur/slugify 这个命名空间是我们在项目中需要用来引入这个包的。

引入一个包

现在我们知道确切地要安装哪个包了,我们可以运行 composer require 来将其作为一个依赖项包含进来,并且为项目生成 composer.json 文件:

composer require cocur/slugify
使用版本 ^2.1 安装 cocur/slugify
./composer.json 已创建
正在加载包存储库并获取包信息
正在更新依赖关系(包括 require-dev)
  - 正在安装 cocur/slugify (v2.1.1)
    正在下载: 100%         

正在写入锁定文件
正在生成自动加载文件

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

ls -l
总用量 12
-rw-rw-r-- 1 sammy sammy   59 5月  17 10:24 composer.json
-rw-rw-r-- 1 sammy sammy 2894 5月  17 10:24 composer.lock
drwxrwxr-x 4 sammy sammy 4096 5月  17 10:24 vendor

composer.lock 文件用于存储关于安装了哪些版本的每个包的信息,并确保如果其他人克隆你的项目并安装其依赖项时使用相同的版本。vendor 目录是项目依赖项的所在地。vendor 文件夹 不应该 被提交到版本控制中 - 你只需要包括 composer.jsoncomposer.lock 文件。

理解版本约束

如果你检查你的 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.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 — 包含自动加载脚本

由于 PHP 本身并不自动处理类的加载,Composer 还提供了一个自动加载脚本,您可以在项目中包含它,以便免费获得自动加载。这样可以更轻松地处理依赖关系并定义自己的命名空间。

您唯一需要做的就是在 PHP 脚本中,在任何类实例化之前,包含 vendor/autoload.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 包的共享和发现建立了新的事实标准。

  • 29
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白如意i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值