othyn / php-enum-enhancements
为PHP新枚举类型添加了一些有用的枚举特性。
Requires
- php: ^8.1
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.6
- phpunit/phpunit: ^9.5.13
This package is auto-updated.
Last update: 2024-09-13 08:09:27 UTC
README
这是一个用于 Composer 的 PHP 包,它为PHP的新 Enum 类型添加了一些有用的枚举特性。
该包目前提供以下功能;
- 一个方便的特性,扩展了PHP的原生枚举类型
- 添加了一个新的静态方法
UnitEnum::valueArray(): array,该方法返回枚举中所有值的类型相同的数组 - 添加了一个新的静态方法
UnitEnum::valueList(string $separator = ', '): string,该方法返回枚举中所有值的逗号分隔列表字符串
该包可在Packagist上作为 othyn/php-enum-enhancements 获取。
安装
进入您想要安装包的项目,并运行以下Composer命令以获取最新版本
composer require othyn/php-enum-enhancements
使用方法
有关更全面的用法示例,您可以在测试套件中查看。但是,我将以下列出一些基本的用法示例。
枚举:值数组
<?php namespace App\Enums; use Othyn\PhpEnumEnhancements\Traits\EnumEnhancements; enum TestEnum { use EnumEnhancements; case Alpha; case Bravo; case Charlie; case Delta; case Echo; } var_dump(TestEnum::valueArray()); // Results in the following being printed: // array(5) { // [0]=> // string(5) "Alpha" // [1]=> // string(5) "Bravo" // [2]=> // string(7) "Charlie" // [3]=> // string(5) "Delta" // [4]=> // string(4) "Echo" // }
枚举:值列表
<?php namespace App\Enums; use Othyn\PhpEnumEnhancements\Traits\EnumEnhancements; enum TestEnum { use EnumEnhancements; case Alpha; case Bravo; case Charlie; case Delta; case Echo; } var_dump(TestEnum::valueList()); // Results in the following being printed: // string(34) "Alpha, Bravo, Charlie, Delta, Echo" var_dump(TestEnum::valueList(separator: ':')); // Results in the following being printed: // string(30) "Alpha:Bravo:Charlie:Delta:Echo"
支持字符串枚举:值数组
<?php namespace App\Enums; use Othyn\PhpEnumEnhancements\Traits\EnumEnhancements; enum TestStringBackedEnum: string { use EnumEnhancements; case Alpha = 'alpha'; case Bravo = 'bravo'; case Charlie = 'charlie'; case Delta = 'delta'; case Echo = 'echo'; } var_dump(TestStringBackedEnum::valueArray()); // Results in the following being printed: // array(5) { // [0]=> // string(5) "alpha" // [1]=> // string(5) "bravo" // [2]=> // string(7) "charlie" // [3]=> // string(5) "delta" // [4]=> // string(4) "echo" // }
支持字符串枚举:值列表
<?php namespace App\Enums; use Othyn\PhpEnumEnhancements\Traits\EnumEnhancements; enum TestStringBackedEnum: string { use EnumEnhancements; case Alpha = 'alpha'; case Bravo = 'bravo'; case Charlie = 'charlie'; case Delta = 'delta'; case Echo = 'echo'; } var_dump(TestStringBackedEnum::valueList()); // Results in the following being printed: // string(34) "alpha, bravo, charlie, delta, echo" var_dump(TestStringBackedEnum::valueList(separator: ':')); // Results in the following being printed: // string(30) "alpha:bravo:charlie:delta:echo"
支持整数枚举:值数组
<?php namespace App\Enums; use Othyn\PhpEnumEnhancements\Traits\EnumEnhancements; enum TestIntBackedEnum: int { use EnumEnhancements; case One = 1; case Two = 2; case Three = 3; case Four = 4; case Five = 5; } var_dump(TestIntBackedEnum::valueArray()); // Results in the following being printed: // array(5) { // [0]=> // int(1) // [1]=> // int(2) // [2]=> // int(3) // [3]=> // int(4) // [4]=> // int(5) // }
支持整数枚举:值列表
<?php namespace App\Enums; use Othyn\PhpEnumEnhancements\Traits\EnumEnhancements; enum TestIntBackedEnum: int { use EnumEnhancements; case One = 1; case Two = 2; case Three = 3; case Four = 4; case Five = 5; } var_dump(TestIntBackedEnum::valueList()); // Results in the following being printed: // string(13) "1, 2, 3, 4, 5" var_dump(TestIntBackedEnum::valueList(separator: ':')); // Results in the following being printed: // string(9) "1:2:3:4:5"
开发
大多数开发过程都封装在易于使用的Docker容器中。
强制风格
项目的 .php-cs-fixer.dist.php 配置文件包含了该仓库遵循的规则,并将运行在 ./src 和 ./tests 目录。
对于远程风格强制,有一个GitHub Action配置为自动运行 phpcsfixer。
对于本地风格强制,有一个composer脚本 composer style 配置为运行 phpcsfixer。
测试
对于远程测试,有一个GitHub Action配置为自动在 main 分支或PR分支上运行测试套件。
对于本地测试,有一个预构建的Docker容器,其中包含Alpine CLI版本的PHP + PHPUnit + xdebug。该容器已配置用于测试项目,可以通过以下命令设置
composer docker-build
这应该会触发Docker Compose构建镜像。然后您可以通过以下命令启动容器
composer docker-up
所有代码都进行了测试,可以通过以下方式运行
# PHPUnit with code coverage report composer test # PHPUnit with code coverage report, using local phpunit and xdebug composer test-local
在这些测试中,有针对该包的生产就绪实现的功能测试。目前没有单元测试。
您还可以通过使用以下命令轻松在测试容器中打开shell
composer docker-shell
变更日志
所有项目变更都应该在以下部分进行记录。版本遵循 SemVer 标准。
版本 1.0.1
[Git Changes] README更改。
添加
- 一切
更改
- README中的SemVer术语和链接更改。
- 将README中的用法示例更改为利用
var_dump来展示从UnitEnum::valueArray()返回的数组中的结果类型。 - 在代码示例中使用
UnitEnum基础类型,其中没有提供测试枚举。
修复
- 一切
移除
- 无
版本 1.0.0
[Git变更] 首次发布。
添加
- 一切
更改
- 一切
修复
- 一切
移除
- 无