警告PHP 8.1以降を使用している場合は、このパッケージの代わりにネイティブPHPエナムを使用することをお勧めします。
メンテナンスパッチをいくつかリリースする場合がありますが、このパッケージのサポートは中止されています。
私たちのコードを自由にフォークし、あなたのニーズに合わせてください。
このライブラリは、PHPの列挙 /列挙の実装を提供します。
map()メソッドを提供することにより、オプションでマッピングできます。最初にRexlabsEnumEnumを拡張し、次のことを行う新しいクラスを作成します。
map()メソッドを提供します: <?php
namespace Rexlabs Enum Readme ;
use Rexlabs Enum Enum ;
/**
* Class City
*
* @package RexlabsEnumReadme
*
* @method static static BRISBANE()
* @method static static MELBOURNE()
* @method static static SYDNEY()
*/
class City extends Enum
{
const BRISBANE = ' Brisbane ' ;
const MELBOURNE = ' Melbourne ' ;
const SYDNEY = ' Sydney ' ;
// OPTIONAL - Provide a map() method if you would like to
// map additional data, which will be available from the ->value() method
public static function map (): array
{
return [
self :: BRISBANE => [ " state " => " QLD " , " population " => "" ],
self :: MELBOURNE => [ " state " => " VIC " , " population " => " 5m " ],
self :: SYDNEY => [ " state " => " NSW " , " population " => " 5m " ],
];
}
}
// Static access
echo City:: BRISBANE ; // "Brisbane"
echo City:: MELBOURNE ; // "Melbourne"
City:: names (); // (array)["BRISBANE", "BRISBANE", "SYDNEY"]
City:: keys (); // (array)["Brisbane", "Melbourne", "Sydney"]
City:: keyForName ( ' BRISBANE ' ); // "Brisbane"
City:: nameForKey ( ' Melbourne ' ); // "MELBOURNE"
City:: isValidKey ( ' Sydney ' ); // (boolean)true
City:: isValidKey ( ' Paris ' ); // (boolean)false
// Getting an instance - all return a City instance.
$ city = City:: BRISBANE ();
$ city = City:: instanceFromName ( ' BRISBANE ' );
$ city = City:: instanceFromKey ( ' Brisbane ' );
// Working with an instance
$ city -> name (); // "BRISBANE"
$ city -> key (); // "Brisbane"
$ city -> value ()[ ' population ' ]; // null - no value mapped
$ city -> is (City:: BRISBANE ); // (boolean)true
$ city -> is (City:: BRISBANE ()); // (boolean)true
$ city -> is (City:: SYDNEY ()); // (boolean)false
$ city -> isNot (City:: SYDNEY ()); // (boolean)true
$ city -> isAnyOf ([City:: BRISBANE ()]); // (boolean)true
$ city -> isNoneOf ([City:: BRISBANE ()]); // (boolean)false
// Or ...
City:: SYDNEY ()-> key (); // "Sydney"
City:: SYDNEY ()-> value (); // (array)["state"=>"NSW", "population"=>"5m"] プロジェクトにインストールするには:
composer require rexlabs/enumこれで、 Enumオブジェクトを依存関係として入力できます。
<?php
function announceCity ( City $ city ) {
echo "{ $ city -> key ()} is located in { $ city -> value ()[ " state " ]} , population: { $ city -> value ()[ " population " ]}n" ;
}
// Get a new instance
announceCity (City:: SYDNEY ()); // "Sydney is located in NSW, population: 5m" Enumの各インスタンスは、次の方法を提供します。
一定の名前を返します。
$ enum -> name (); const MY_CONST = 'key'宣言の定数に割り当てられた値/キーを返します。
$ enum -> key ();マッピングされた値(if-any)を返します( map()で返される配列内)。値がマッピングされていない場合、このメソッドはnullを返します。
$ enum -> value ();このインスタンスが指定された定数キーまたは列挙インスタンスと同じ場合、trueを返します。
$ enum -> is (City:: SYDNEY ); // Compare to constant key
$ enum -> is (City:: SYDNEY ()); // Compare to instance __toString()メソッドは、定数名を返すために定義されています。
( string )City:: SYDNEY (); // "SYDNEY" 定数キーを値にマップする配列を返します。この方法は、オプションでサブクラスに実装できます。デフォルトの実装は、 nullにマッピングされたキーの配列を返します。
列挙インスタンスの配列を返します。
一定のキーの配列を返します。
map()で定義された値の配列を返します。 map()が実装されていない場合、null値の配列が返されます。
クラスで宣言されたすべての一定の名前の配列を返します。
クラス内で宣言されたすべての定数に対して、constant_name =>キーの連想配列を返します。
指定された定数名のキーを返します。
指定されたキー( keyForNameの逆)の定数名を返します。
指定されたキー( map()メソッドで宣言されているように)の値(またはマッピングされていない場合はnull)を返します。
指定された値のキーを返します( map()メソッドで宣言されています)。
注:複製値が
map()メソッド内に含まれる場合、最初のキーのみが返されます。
指定された定数名からこの列挙のインスタンスを作成します。
指定されたキーからこの列挙のインスタンスを作成します。
指定されたキーが存在する場合、trueを返します。
指定された定数(ケースセンシティブ)がクラスで宣言されている場合、trueを返します。
与えられたキーが存在しない場合RexlabsEnumExceptionsInvalidKeyExceptionをスローします。
テストを実行するには:
composer testsカバレッジレポートを実行するには:
composer coverageカバレッジレポートは./tests/report/index.html report/index.htmlに出力されます
貢献を歓迎します。プルレクエストを提出するか、問題を作成してください。提出されたコードは、PSR-1/PSR-2標準を使用してフォーマットする必要があります。