othyn/php-enum-enhancements

为PHP新枚举类型添加了一些有用的枚举特性。

资助包维护!
othyn

安装: 18,552

依赖者: 1

建议者: 0

安全: 0

星级: 18

关注者: 3

分支: 0

开放问题: 0

语言:HTML

v1.0.1 2022-02-15 19:17 UTC

This package is auto-updated.

Last update: 2024-09-13 08:09:27 UTC


README

Tests Code Style Downloads GitHub license Love

这是一个用于 ComposerPHP 包,它为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变更] 首次发布。

添加

  • 一切

更改

  • 一切

修复

  • 一切

移除