0%

常用php-composer库汇总

常用 php composer 库汇总

PHP_CodeSniffer

PHP_CodeSniffer是两个PHP脚本的集合;主要的phpcs脚本,用于标记PHP、JavaScript和CSS文件,以检测违反已定义的编码标准,以及第二个phpcbf脚本,用于自动纠正违反编码标准的行为。PHP_CodeSniffer是一个重要的开发工具,它可以确保代码保持干净和一致

1
2
3
4
5
6
7
composer global require "squizlabs/php_codesniffer=*"

echo "export PATH=$PATH:$HOME/.composer/vendor/bin" >> ~/.zshrc
phpcs --version
PHP_CodeSniffer version 3.6.0 (stable) by Squiz (http://www.squiz.net)
phpcbf --verion
PHP_CodeSniffer version 3.6.0 (stable) by Squiz (http://www.squiz.net)
PHPCompatibility

这是一组用于检查PHP跨版本兼容性的PHP CodeSniffer嗅探器。它将允许您分析您的代码与更高和更低版本的PHP的兼容性。

1
2
3
4
5
6
7
composer global require "phpcompatibility/php-compatibility=*"

# 增加 PHPCompatibility 检测扩展
# 此命令实际操作的配置文件:~/.composer/vendor/squizlabs/php_codesniffer/CodeSniffer.conf
phpcs --config-set installed_paths ~/.composer/vendor/phpcompatibility/php-compatibility
# 检测代码是否兼容 php-7.4 版本
phpcs --standard=PHPCompatibility --runtime-set testVersion 7.4 --extensions=php ./
Snowflake,Snowflake Algorithm (Twitter announced).
1
composer require godruoyi/php-snowflake
Hashids,从整数中生成简短的唯一id
1
composer require hashids/hashids
JWT
1
composer require firebase/php-jwt
Guzzle
1
composer require guzzlehttp/guzzle
PHPUnit
1
composer require phpunit/phpunit
Easywechat
1
2
3
4
# php >= 7.2
composer require "overtrue/wechat:^4.2"
# php >= 7.4
composer require "overtrue/wechat:^5.0"

PhpSpreadsheet

是 PHPExcel 的新版本,要求 PHP 版本 >= 7.3。

1
2
composer require --prefer-dist phpoffice/phpspreadsheet
composer dumpautoload -o

Composer 命令行工具使用

Composer 包安装

1
2
3
4
composer install --prefer-dist

# 生产模式,优化
save_handler

Composer script

composer script 定义
1
2
3
4
5
6
7
8
"scripts": {
"test": [
"php -r 'echo \"Hello World!\" . PHP_EOL;// echo Hello World!'",
]
},
"scripts-descriptions": {
"test": "Hello World!",
}
查看 script 列表
1
2
3
4
5
6
$ composer run -l
scripts:
test Hello World!
$ composer run-script -l
scripts:
test Hello World!
执行 script
1
$ composer test

Composer 2.0

升级到 2.0
1
composer self-update --2
降级到 1.0
1
2
3
composer self-update --rollback
# 或者
composer self-update --1
参考

安装包

常用全局dev包

全局安装路径可通过 composer config -l 命令查看。

Registry 管理
1
$ composer global require slince/composer-registry-manager ^2.0

用法:

1
2
3
$ composer repo:ls
# 使用 aliyun registry 镜像站
$ composer repo:use aliyun
phpunit
1
$ composer global require --dev phpunit/phpunit
1
2
3
4
$ wget -c https://phar.phpunit.de/phpunit-8.5.15.phar -O /usr/local/bin/phpunit
$ chmod u+x /usr/local/bin/phpunit
$ phpunit --version
PHPUnit 8.5.15 by Sebastian Bergmann and contributors.
常用包
phpunit
1
2
3
4
5
6
composer require --prefer-dist --dev "phpunit/phpunit"
composer dumpautoload -o -a
composer exec phpunit

composer install
./vendor/bin/phpunit

移除包

1
composer remove phpunit/phpunit

常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 配置 阿里云 Composer 镜像站
composer config repo.packagist composer https://mirrors.aliyun.com/composer

# 还原官方 Composer 镜像站
composer config -g --unset repo.packagist

# 查看全局配置
composer config -g -l

# 安装 thinkphp 框架
composer create-project topthink/think
# 安装 Laravel 框架
composer require laravel/framework


# 忽略平台版本要求
composer create-project composer/satis:dev-main --ignore-platform-reqs
# 扫描构建
php bin/satis build satis.json public -v
安装 monolog 日志库范例
  1. 在项目目录中,执行 composer require monolog/monolog 命令。

    会自动创建 composer.json 文件。

  2. 新建 composer.json 文件

    1. 登记需要安装的依赖。
    2. 执行 composer install 安装命令。

    若没有任何依赖,直接运行 composer install 会安装 Composer 的自动加载文件。

composer create-project 命令解析

从功能上来说等价于 git clonecomposer install 两个命令。

VCS(Version Control System 版本控制系统)版本状态标识

名称 实例 描述
空版本号 monolog/monolog 默认使用最新稳定版本
确切版本号 monolog/monolog:”1.0.2” 指定包的确切版本
范围
>
<
!=
|| 或者
- 连接符
monolog/monolog:”>=1.0”,monolog/monolog:”=2.0” 使用比较操作符可以指定有效的版本范围。有效的操作符:>、>=、<、<=、!=。你可以定义多个范围,用逗号隔开,这将被视为一个逻辑 AND 处理。管道符号 || 将作为逻辑 OR 处理。AND 的优先级高于 OR。
优先使用最高版本。
通配符 1.0.* 或 * 使用通配符 * 来指定一种模式。
1.0.*>=1.0,<1. 是等效的。
赋值运算符(最低版本) ~1.2.3 对于遵循语义化版本号的项目非常有用。
~1.2.3>=1.2.3,<1.3 是等效的。
~1.2>=1.2.0,<2.0.0 是等效的
脱字号版本(最低版本) carret ^1.2.3 比 ~ 范围大一级。
^1.2.3>=1.2.3,<2.0.0是等效的。
^1.2>=1.2.0,<2.0.0 是等效的
~^ 修饰符区别。
  • ~^ 在修饰两个版本号时,效果是一样的,示例:

    • ~1.2^1.2 都与 >=1.2.0,<2.0 是等效的
  • ~^ 在修饰三个版本号时,^~ 范围更大,示例:

    • ~1.2.3>=1.2.3,<1.3 是等效的。
    • ^1.2.3>=1.2.3,<2.0 是等效的。
版本变化
  • alpha
    • 内测版
    • bug多
    • 不稳定
    • 内部版本
    • 不断添加新功能
  • beta1、beta2
    • 公测版
    • 不稳定(相比alpha稳定一些)
    • bug相对多
    • 不断添加新功能
  • RC
    • 候选版
    • 经过多个 beta 版本逐渐稳定
    • 基本不添加新功能
    • 修复完 bug 即可进入正式发布版
  • GA、Release、Stable、Final 等
    • 正式版
    • 稳定
    • bug很少
    • 推荐生产使用

其他

1
2
3
4
5
6
7
8
9
##### 使用私有composer-repo
composer create-project codezm/php-skeleton:dev-master yaf-test --repository-url http://packagist.codezm.com:8081 --no-secure-http

##### 使用私有git-repo
composer create-project codezm/php-skeleton yaf_tests --repository="{\"url\": \"https://gitee.com/codezm/php-skeleton.git\", \"type\": \"vcs\"}" --stability=dev --remove-vcs


# 失败
composer create-project codezm/php-skeleton --repository-url=https://gitee.com/codezm/php-skeleton.git yaf-tests
原则
  1. 所有带有 Yaf 前缀的,均在 skeleton 包中继承。
删除 composer repo 缓存代码

在新服务器克隆私有仓库代码时,会提示输入账号信息,composer 会提示是否 store credentials。若存储后删除了 ~/.config/composer/auth.json 文件,则需要删除 composer repo 缓存代码,否则将会导致无法更新最新包。

1
2
$ cd /root/.cache/composer/repo/
$ rm -rf https---gitee.com-codezm*

安装某扩展而不更新其他依赖

1
2
3
4
5
6
composer require iflytekop/xfyun-sdk --no-update
composer update iflytekop/xfyun-sdk
composer dump-autoload -o

# 指定版本号
composer update iflytekop/xfyun-sdk:2.0.0

只添加扩展到 composer.json(不更新composer.lock) 而不安装此扩展

1
composer require iflytekop/xfyun-sdk --no-update

参考