Пакет Composer для PHP, который добавляет некоторые полезные свойства перечисления к великолепному новому типу PHP Enum.
Пакет на данный момент обеспечивает;
UnitEnum::valueArray(): array
который возвращает все значения внутри Enum как одинаково типизированный массив значений Enum.UnitEnum::valueList(string $separator = ', '): string
, который возвращает все значения внутри Enum в виде строки списка, разделенной запятыми.Пакет доступен на 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, настроенное на автоматический запуск phpcsfixer
.
Для применения локального стиля существует 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
В этих тестах есть тесты функций для готовой к производству реализации пакета. В настоящее время модульных тестов нет.
Вы также можете легко открыть оболочку в тестовом контейнере с помощью команды:
composer docker-shell
Любые изменения проекта для выпусков должны быть задокументированы ниже. Управление версиями соответствует стандарту SemVer.
[Изменения Git] Изменения в README.
var_dump
для демонстрации результирующих типов в массиве, возвращаемом из UnitEnum::valueArray()
.UnitEnum
в документации в примерах кода, где тестовый Enum отсутствует. [Изменения Git] Первоначальный выпуск.