如何使用composer?

PHP

1 基础知识

1.1 Composer的简介

Composer是PHP中依赖项管理的工具,它允许您声明项目所依赖的库,并管理(安装/更新)它们

1.2 Composer的包存储库

– 所谓的包存储库,即时包存放的仓库
– Packagist是Composer的主要存储库,地址为:https://packagist.org/

2 最佳实践

2.1 环境部署

如果你尚没有环境PHP的环境,可根据以下环境部署PHP的模块环境,
https://www.cmdschool.org/archives/3060

2.2 安装部署

2.2.1 下载

wget https://getcomposer.org/download/1.7.3/composer.phar

注:以上程序依赖于PHP解析器,其他版本请参阅以下链接,
https://getcomposer.org/download/
2.2.2 全局部署

mv composer.phar /usr/local/bin/composer
chmod +x /usr/local/bin/composer

2.2.3 安装openssl扩展

cd ~/php-*/ext/openssl/
cp config0.m4 config.m4
phpize
./configure
make
make install

根据提示安装依赖的软件包,

yum install -y openssl-devel

2.2 基本用法

2.2.1 安装依赖项

sudo -u apache /usr/local/bin/composer install

注:
– 程序分析并安装composer.json所列出的依赖项目
– 软件包将下载到vendor文件夹存储
– 软件包具体版本将记录在锁文件(composer.lock)中
2.2.2 更新依赖项

sudo -u apache /usr/local/bin/composer update

2.2.3 引用安装的类
Composer会自动生成一个“vendor/autoload.php”的文件,引用该文件即可加载Composer的类库,范例如下,

require __DIR__ . '/vendor/autoload.php';

$log = new Monolog\Logger('name');
$log->pushHandler(new Monolog\Handler\StreamHandler('app.log', Monolog\Logger::WARNING));
$log->addWarning('Foo');

2.2.4 自动装载自有代码
通过向文件composer.json添加autoload字段实现,具体如下,

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

注:
– 为名称空间注册PSR-4自动加载器Acme
– src目录位于项目的根目录,例子是添加目录映射
– 范例文件“src/Foo.php”应包含一个“Acme\Foo”类
要使以上类生效,需要通过以下命令重新生成“vendor/autoload.php”文件

composer dump-autoload

或者

composer dumpautoload

2.3 库

2.3.1 库的安装包
在composer.json文件中,通过包的名称来定义一个可安装的项目,详细如下,

{
    "name": "acme/hello-world",
    "require": {
        "monolog/monolog": "1.0.*"
    }
}

注:包的名称通常由供应商名称加项目名称组成,例如“acme/hello-world”
2.3.2 库的版本控制
通常情况下Composer会从VCS(版本控制)存储库中推断出库的版本,但手动维护包例外,需要我们声明版本号,

{
    "version": "1.0.0"
}

2.3.3 库的依赖关系
– 假设我们将以上的库发布到GitHub中,地址为,https://github.com/username/hello-world
– 现在我们新建如下项目,并声明依赖关系,

{
    "name": "acme/blog",
    "require": {
        "acme/hello-world": "dev-master"
    }
}

进一步地,我们需要声明依赖的源代码的确切位置,可以作如下定义,

{
    "name": "acme/blog",
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/username/hello-world"
        }
    ],
    "require": {
        "acme/hello-world": "dev-master"
    }
}

注:其实,如果你没有以上确切的位置声明,Composer将默认指向Packagist的库,如果你希望通过Packagist发布你的程序,请访问以下链接,
https://packagist.org/

2.4 命令行

2.4.1 list命令

composer list

2.4.2 help命令
通过以上命令查询到的具体命令,进一步的使用方法可通过–help查询具体的使用方法,范例如下,

composer install --help

每个命令都有以下选项:

--verbose(-v):增加消息的详细程度。
--help(-h):显示帮助信息。
--quiet(-q):不输出任何消息。
--no-interaction(-n):不要问任何互动问题。
--no-plugins:禁用插件。
--working-dir(-d):如果指定,则使用给定目录作为工作目录。
--profile:显示时序和内存使用信息
--ansi:强制ANSI输出。
--no-ansi:禁用ANSI输出。
--version(-V):显示此应用程序版本。

命令的退出代码有,

0:好的
1:通用/未知错误代码
2:依赖性解决错误代码

2.4.3 init命令
init(初始化)命令可通过交互的方式创建composer.json文件,详细如下,

composer init

详细的选项可以下帮助命令获取,

composer init --help

2.4.4 install命令
安装命令从当前目录读取composer.json文件,解析依赖项并将其安装到vendor目录,用法如下,

composer install

详细的选项可以下帮助命令获取,

composer install --help

2.4.5 update命令
更新命令获取最新版本的依赖项并更新composer.lock文件,

composer update

更新部分软件包可按如下范例使用,

composer update vendor/package vendor/package2

命令行支持通配符安装,

composer update vendor/*

详细的选项可以下帮助命令获取,

composer update --help

2.4.6 require命令
需求命令将新包添加的vendor目录并将该依赖项添加到composer.json文件,如果文件不存在,则动动态创建。

composer require

注:以上为交互方式处理,如果不想以交互方式处理,可以按如下格式使用命令,

composer require vendor/package:2.* vendor/package2:dev-master

详细的选项可以下帮助命令获取,

composer require --help

2.4.7 remove命令
删除命令将从vendor目录中删除该包并将该依赖项从composer.json文件中删除

composer remove vendor/package vendor/package2

详细的选项可以下帮助命令获取,

composer remove --help

2.4.8 check-platform-reqs命令
check-platform-reqs命令检查PHP和扩展的版本是否与安装的软件包的需求匹配

composer check-platform-reqs

2.4.9 global命令
如果你希望依赖项在所有(全局)的项目上生效,可使用global命令执行,例如,

composer global require friendsofphp/php-cs-fixer

如果使用全局更新命令,稍后则可更快速地更新项目的依赖项,

composer global update

2.4.10 搜索命令
搜索命令允许你在线搜索当前的项目包存储库,传递关键字即可,

composer search monolog

详细的选项可以下帮助命令获取,

composer search --help

2.4.11 show命令
show命令可列出所有可用的包,

composer show

该命令支持使用通配符搜索,

composer show monolog/*

如果希望查看某个包的详细信息,可通过show命令传递包的具体名称实现,

composer show monolog/monolog

详细的选项可以下帮助命令获取,

composer show --help

2.4.12 outdated命令
outdated命令显示已安装包的列表,其中包含可用的更新,包括当前版本和最新版本,三种颜色分别代表的意义是,

绿色(=):依赖关系是最新版本
黄色(〜):依赖性有一个新版本可用,包括根据semver的向后兼容性中断,所以尽可能升级,但它可能涉及工作。
红色(!):Dependency有一个与semver兼容的新版本,你应该升级它

详细的选项可以下帮助命令获取,

composer show --help

2.4.12 browse/home命令
命令在浏览器打开一个包的存储库URL或主页

composer browse

或者

composer home

2.4.13 suggests命令
建议命令列出当前软件包建议的所有软件包

composer suggests

参阅文档:
https://getcomposer.org/

没有评论

发表评论

PHP
如何编译安装PHP-FPM?

1 前言 一个问题,一篇文章,一出故事。 PHP-FPM可以跟Nginx配合使Nginx环境具备运行 …

PHP
如何编译安装Apache+PHP8.1.1?

1 前言 笔者平素不喜欢简单的编译安装,因为很多系统管理员为了省事,编译安装的东西没有rpm包安装那 …

Apache
如何编译安装Apache+PHP7.4.3?

1 前言 笔者平素不喜欢简单的编译安装,因为很多系统管理员为了省事,编译安装的东西没有rpm包安装那 …