경고 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() 가 구현되지 않으면 널 값의 배열이 반환됩니다.
클래스와 함께 선언 된 모든 상수 이름의 배열을 반환합니다.
클래스 내에서 선언 된 모든 상수 이름에 대해 constant_name => 키의 연관 배열을 반환합니다.
주어진 상수 이름의 키를 반환합니다.
주어진 키 ( keyForName 의 역수)의 상수 이름을 반환합니다.
주어진 키의 값 (또는 맵핑되지 않은 경우 NULL)을 반환합니다 ( map() 메소드에서 선언 된대로).
주어진 값에 대한 키를 반환합니다 ( map() 메소드에서 선언 된대로).
참고 : 중복 값이
map()메소드 내에 포함되면 첫 번째 키 만 반환됩니다.
주어진 상수 이름 에서이 열거의 인스턴스를 만듭니다.
주어진 키 에서이 열거의 인스턴스를 만듭니다.
주어진 키가 존재하면 TRUE를 반환합니다.
주어진 상수 이름 (사례에 민감한)이 클래스에서 선언 된 경우 true를 반환합니다.
주어진 키가 존재하지 않으면 RexlabsEnumExceptionsInvalidKeyException 던집니다.
테스트 실행 :
composer tests적용 범위 보고서를 실행하려면 :
composer coverage 적용 범위 보고서는 ./tests/report/index.html 로 출력됩니다
기부금을 환영합니다. 풀 수십을 제출하거나 문제를 만듭니다. 제출 된 코드는 PSR-1/PSR-2 표준을 사용하여 포맷해야합니다.