之前一直看前端再用npm,看着挺牛b,最近学习java,接触了maven,docker,果然是很牛B。想起来php也有个类似的composer,之前虽然在用,但是一直没有系统的看过一遍,这次仔仔细细看看,哈哈。
安装composer
curl -sS https://getcomposer.org/installer | php
composer文件
文件名 : composer.json
例子如下
{
"name": "test",
# require中存放的就是需要安装的第三方包
"require": {
# php版本
"php" : "~7.4",
"monolog/monolog": "1.0.*",
# 指定需要的扩展
"ext-json": "*",
# 限定PHP库的版本
"lib-curl": "*"
}
}
包版本
名称 | 实例 | 描述 |
---|
确切的版本号 | 1.0.2 | 直接指定确认的版本号 |
范围 | >=1.0 >=1.0,<2.0 >=1.0,<1.1|>=1.2
| 通过使用比较操作符可以指定有效的版本范围。有效的运算符:>、>=、<、<=、!=。 你可以定义多个范围,用逗号隔开,这将被视为一个逻辑AND处理。一个管道符号|将作为逻辑OR处理。 AND 的优先级高于 OR。 |
通配符 | 1.0.* | 1.0.* 与>=1.0,<1.1 是等效的。 |
赋值运算符 | ~1.2 | ~1.2 相当于>=1.2,<2.0 |
安装第三方依赖
写composer.json之后就可以安装了,linux执行下面命令即可
composer install
composer.lock - 锁文件
在安装依赖后,Composer会将安装时确切的版本号写入composer.lock
文件。这将锁定该项目的特点版本。
这是非常重要的,因为install
命令将会检查锁文件是否存在,如果存在,则将直接下载指定的版本。如果不存在,则将读取composer.json
文件并创建锁文件。
这意味着,只要有锁文件存在,就算第三方的依赖包发生了更新,执行install
命令也不会获得更新。如果需要获取更新,可以执行composer update
命令。
在php中使用
composer提供了自动加载的功能,如下
require_once "vendor/autoload.php";
$logger = new \Monolog\Logger('test');
$logger->pushHandler(new Monolog\Handler\StreamHandler('app.log', Monolog\Logger::WARNING));
$logger->addError("123456");
常用命令
命令很多,就列几个感觉会比较常用的
composer install : 安装,优先读取lock文件,没有则读取composer.json文件并生成lock文件
composer update : 读取composer.json文件更新依赖,并更新lock文件,也可以更新指定的包,例 : php composer.phar update vendor/package vendor/package2
composer require : 增加新的依赖到当前目录的composer.json,例 : php composer.phar require vendor/package:2.* vendor/package2:dev-master
composer create-project : 使用现有的包创建一个项目,相当于执行了git clone
,常用的场景
- 你可以快速的部署你的应用。
- 你可以检出任何资源包,并开发它的补丁。
- 多人开发项目,可以用它来加快应用的初始化。