素晴らしい新しい PHP Enum 型にいくつかの便利な enum 特性を追加する PHP 用の Composer パッケージ。
これまでのパッケージでは次のことが提供されています。
UnitEnum::valueArray(): array
メソッドを追加します。これは、Enum 内のすべての値を、同じ型の Enum 値の配列として返します。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
ディレクトリに対して実行されるルールが含まれています。
リモート スタイルを適用するには、 phpcsfixer
自動的に実行するように構成された GitHub アクションがあります。
ローカル スタイルを強制するために、 phpcsfixer
実行するように構成されたコンポーザー スクリプトのcomposer style
があります。
リモート テストの場合は、 main
ブランチまたは PR ブランチでテスト スイートを自動的に実行する GitHub Action セットアップがあります。
ローカル テスト用に、PHP + PHPUnit + xdebug の Alpine CLI リリースを含む事前に構築された Docker コンテナがあります。これはプロジェクトをテストするためのセットアップであり、次の方法でセットアップできます。
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
これらのテストには、パッケージの実稼働対応実装のための機能テストがあります。現在、単体テストはありません。
次のコマンドを使用して、テスト コンテナーでシェルを簡単に開くこともできます。
composer docker-shell
リリースに伴うプロジェクトの変更はすべて、以下に文書化する必要があります。バージョン管理は SemVer 標準に従います。
[Git の変更点] README が変更されました。
var_dump
を使用して、 UnitEnum::valueArray()
から返される配列内の結果の型を示します。UnitEnum
基本型を使用しました。 [Git の変更点] 初期リリース。