Предупреждение Если вы используете 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 (); Возвращает значение (если-любое), которое отображается (в массиве, возвращаемом 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 => Key, для всех постоянных имен, объявленных в классе.
Возвращает ключ для данного постоянного имени.
Возвращает постоянное имя для данного ключа (обратное keyForName ).
Возвращает значение (или нулевое, если не отображено) для данного ключа (как объявлено в методе map() ).
Возвращает ключ для заданного значения (как объявлено в методе map() ).
ПРИМЕЧАНИЕ. Если дубликаты значений содержатся в методе
map(), то будет возвращен только первый ключ.
Создайте экземпляр этого перечисления из данного постоянного имени.
Создайте экземпляр этого перечисления из данного ключа.
Возвращает True, если существует заданный ключ.
Возвращает True, если данное постоянное имя (чувствительное к случаям) было объявлено в классе.
Бросает RexlabsEnumExceptionsInvalidKeyException если данного ключа не существует.
Чтобы запустить тесты:
composer testsЧтобы запустить отчет о покрытии:
composer coverage Отчет о покрытии выводит на ./tests/report/index.html
Взносы приветствуются, пожалуйста, отправьте запрос или создайте проблему. Ваш отправленный код должен быть отформатирован с использованием стандартов PSR-1/PSR-2.