PHP管理依赖(dependency)关系工具 Composer 安装与使用

yizhihongxing

PHP管理依赖(dependency)关系工具 Composer 安装与使用

什么是 Composer

Composer 是 PHP 依赖管理工具,它能够自动下载并安装 PHP 第三方库和类文件,同时也能管理这些依赖库之间的关系。使用 Composer,我们可以轻松的管理项目中的依赖关系,将精力更多地放到项目本身的实现上,提高开发效率。

Composer 安装

Composer 安装十分简单,只需在命令行终端中输入以下命令即可:

curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer

上述命令中,第一条命令执行完成后,会在当前目录下生成一个 composer.phar 文件。如果没有安装 curl 工具,请使用以下命令安装:

sudo apt-get install curl

执行完毕后,将 composer.phar 文件移动到 /usr/local/bin/ 目录下,这样我们就可以在全局命令行中通过 composer 命令来执行 Composer 工具了。

Composer 使用

初始化项目

初始化项目非常简单:

composer init

执行上述命令后,会出现一系列的交互式提示,我们只需要根据实际情况依次填写即可。当然,也可以通过执行下面命令来快速生成默认配置:

composer init --name="myproject" --description="A new PHP project" --author="myname" --type="project"

安装依赖

在项目开发中,我们经常需要使用到别人写的工具库或者类库,这些第三方库文件就是我们所说的依赖。

在 Composer 中,安装依赖也非常简单,只需要在命令行中执行以下命令即可:

composer require vendor/package

其中,vendor 和 package 分别代表依赖库的供应商和名称,例如我们要安装 Symfony 的 Http Foundation 组件:

composer require symfony/http-foundation

Composer 会在当前项目目录自动创建 composer.json 文件,并将安装的依赖库和版本信息保存到该文件中。

同时,Composer 还会在自动创建一个 vendor 目录,用于存放所安装的依赖库文件。

版本约束

在依赖库的安装中,版本约束非常重要。如果我们不制定版本号或者指定的版本号和其他依赖库版本不兼容,可能会导致项目功能无法正常运行,而且不同的版本号可能会对同一个库的功能产生不同的影响。

Composer 支持多种版本约束方式,包括:

  • 版本号
  • 版本通配符
  • 比较操作符
  • 稳定性标识符

例如,我们需要安装 Symfony 的 Http Foundation 组件,如果我们希望安装的是 3.4 版本,可以使用如下命令:

composer require symfony/http-foundation:^3.4

在上述命令中,^ 符号代表通过 Composer 自动安装当前版本以及其他向后兼容的公开版本。

自动加载

Composer 还可以自动加载依赖库,让我们不必再手动管理库文件的引用关系。当我们在项目中使用依赖函数或者类文件时,Composer 会自动加载依赖库文件。需要注意的是,为了让依赖库能够被自动加载,需要管理文件用符合 PSR-4 或者 PSR-0 规范命名,例如:

{
    "autoload": {
        "psr-4": {
            "App\\": "src/"
        }
    }
}

以上代码中,在 src 目录下的所有文件和子目录中都应该遵循 App 命名空间规范。

示例一:安装 Guzzle Http 客户端库

下面我们使用一个具体的示例来介绍 Composer 的使用步骤。我们将安装 Guzzle Http 客户端库,用于发送 HTTP 请求。

  1. 安装 Guzzle Http 客户端库:
composer require guzzlehttp/guzzle
  1. 编写测试代码:
<?php

require 'vendor/autoload.php';

use GuzzleHttp\Client;

$client = new Client([
    // Base URI is used with relative requests
    'base_uri' => 'http://httpbin.org',
    // You can set any number of default request options.
    'timeout'  => 2.0,
]);

$response = $client->request('GET', '/get');
echo $response->getBody();

以上代码中,我们使用了 Guzzle Http 客户端库中的一个名为 Client 的类,使用该类可以发送 HTTP 请求。

  1. 运行测试代码

在终端输入以下命令,将测试代码运行起来:

php test.php

如果代码能够正常运行,并从远程地址获取到了响应数据,即说明安装好了 Guzzle Http 客户端库,并且 Guzzle Http 客户端库文件已经被 Composer 自动加载了。

示例二:安装 phpunit 测试框架

还有一个示例,我们将安装 phpunit 测试框架,对我们的程序进行功能验证。步骤如下:

  1. 安装 phpunit:
composer require phpunit/phpunit
  1. 创建单元测试文件和测试代码:

在我们的项目根目录下创建一个名为 tests 的文件夹,然后在该目录下创建一个名为 Test.php 的文件,并写入如下代码:

<?php

use PHPUnit\Framework\TestCase;

class MathTest extends TestCase
{
    public function testExpectTrueIsTrue()
    {
        $this->assertTrue(true);
    }
}

以上代码定义了一个名为 MathTest 的测试类,其中有一个名为 testExpectTrueIsTrue 的测试方法。该方法通过 assertTrue 断言方法来判断变量 true 是否为 true。

  1. 执行测试代码

在终端输入如下命令,将测试代码运行起来:

./vendor/bin/phpunit

在命令行中将会显示我们的程序是否通过了测试。

结论

通过以上示例,我们可以看出 Composer 的依赖管理功能非常强大,使用起来也非常简单,大大提高了 PHP 项目的开发效率。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP管理依赖(dependency)关系工具 Composer 安装与使用 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • linux网站建立步骤

    下面是“Linux网站建立步骤”的完整攻略: 1. 选择web服务器 网站的第一步是选择web服务器来处理网站的请求。大多数Linux发行版都预装了Apache HTTP服务器,但也可以考虑其他的选择,如Nginx或Lighttpd等。 2. 安装和配置web服务器 在选择了一个web服务器后,需要开始安装和配置它。这包括启动服务器、配置监听地址和端口以及创…

    database 2023年5月22日
    00
  • linux 服务版安装简易说明书

    Linux 服务版安装简易说明书 简介 本文将介绍Linux服务版的安装过程,并提供两个示例以说明安装过程。安装包版本为CentOS 7.4。 前置条件 在开始安装之前,请确保您已经满足以下条件: 一台安装了CentOS 7.4的机器 足够的磁盘空间和内存,至少需要20GB的磁盘空间和2GB的内存 管理员权限 安装过程 以下为Linux服务版的安装过程: 进…

    database 2023年5月22日
    00
  • MySQL Select语句是如何执行的

    MySQL Select语句是一种用于从数据库中检索数据的SQL语句。它的执行过程包含以下几个步骤: ① 语法分析:MySQL会先对Select语句进行语法分析,确保它符合SQL的语法规范和要求。 ② 查询优化器:MySQL会对Select语句进行优化,以提高执行效率。它会决定执行策略、优化器的使用和数据源的选择等等。其中,优化器是一个重要的组件,它可以尝试…

    database 2023年5月22日
    00
  • Yanza 和 YugabyteDB 的区别

    Yanza和YugabyteDB都是开源的分布式SQL数据库,它们的设计初衷都是要解决高并发、高可用、高性能、可扩展性等问题,但是它们的实现方式、架构、特点等又有所区别。 Yanza Yanza是一个基于TiDB的轻量级查询中间件,它可以作为MySQL的代理,接收MySQL的请求,并将请求转发给后端的TiDB。Yanza主要解决以下问题: 避免每个应用程序都…

    database 2023年3月27日
    00
  • 使用SKIP-GRANT-TABLES 解决 MYSQL ROOT密码丢失

    当 MySQL 数据库中的 ROOT 用户密码丢失导致无法登录时,可以通过使用 SKIP-GRANT-TABLES 的方式修改密码。下面是详细讲解: 准备 在开始操作之前,需要先进行一些准备工作: 停止 MySQL 服务 找到 MySQL 数据库的配置文件 my.cnf,如果无法找到,可以尝试在终端使用以下命令查找:find / -name my.cnf 备…

    database 2023年5月22日
    00
  • Firebase和Derby的区别

    Firebase和Derby都是面向实时多人协作的应用程序开发平台,但它们具有不同的功能和特点。下面将分别详细讲解Firebase和Derby的区别: Firebase Firebase是一种面向实时多人协作的应用程序开发平台,它可以提供实时数据同步和授权用户身份验证等功能。Firebase可以迅速开发应用程序,并且不需要自己搭建服务器。 实时数据库 Fir…

    database 2023年3月27日
    00
  • Java的MyBatis框架中实现多表连接查询和查询结果分页

    当涉及多表连接查询和查询结果分页时,MyBatis是一个强大的框架,它不仅提供了基本的SQL查询功能,还提供了许多有用的功能,如动态SQL和结果集映射。下面将详细介绍如何在Java的MyBatis框架中实现多表连接查询和查询结果分页。 实现多表连接查询 多表连接是SQL查询中的一个常见需求,它需要在多个表中将数据连接在一起。在MyBatis中实现多表连接查询…

    database 2023年5月21日
    00
  • Linux中大内存页Oracle数据库优化的方法

    Linux中大内存页Oracle数据库优化的方法 什么是大内存页 在Linux中,将物理内存分为若干个页面,每个页面通常大小为4KB。大内存页(Huge Pages)是将连续的多个页面合并为一个巨大的页面,提高内存访问效率的技术。 为什么需要大内存页 Oracle数据库在运行时需要占用大量的内存,如果使用默认的小页面,每次进行内存操作时都需要进行页面映射和切…

    database 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部