Um pacote Composer para PHP que adiciona algumas características úteis de enum ao glorioso novo tipo PHP Enum.
O pacote até agora fornece;
UnitEnum::valueArray(): array que retorna todos os valores dentro de um Enum como uma matriz igualmente digitada de valores EnumUnitEnum::valueList(string $separator = ', '): string que retorna todos os valores dentro de um Enum como uma string de lista separada por vírgulaO pacote está disponível no Packagist como othyn/php-enum-enhancements.
Entre no projeto em que deseja instalá-lo e execute o seguinte comando do Composer para obter a versão mais recente:
composer require othyn/php-enum-enhancementsPara exemplos de uso mais abrangentes, você pode visualizar o conjunto de testes. No entanto, mostrarei alguns exemplos básicos de uso abaixo.
<?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" A maioria dos processos de desenvolvimento são agrupados em um contêiner Docker fácil de usar.
A configuração .php-cs-fixer.dist.php do projeto contém as regras às quais este repositório está em conformidade e será executado nos diretórios ./src e ./tests .
Para aplicação remota de estilo, há uma ação GitHub configurada para executar automaticamente phpcsfixer .
Para aplicação de estilo local, existe um composer style de script configurado para executar phpcsfixer .
Para testes remotos, há uma configuração do GitHub Action para executar automaticamente o conjunto de testes na ramificação main ou nas ramificações PR.
Para testes locais, há um contêiner Docker pré-construído que contém uma versão Alpine CLI de PHP + PHPUnit + xdebug. Isso é configurado para testar o projeto e pode ser configurado através do seguinte:
composer docker-buildIsso deve acionar o Docker Compose para construir a imagem. Você pode então aumentar o contêiner através do seguinte:
composer docker-upExistem testes para todo o código escrito, nos quais podem ser executados via:
# PHPUnit with code coverage report
composer test
# PHPUnit with code coverage report, using local phpunit and xdebug
composer test-localNesses testes, existem testes de recursos para uma implementação do pacote pronta para produção. Não há testes de unidade no momento.
Você também pode abrir facilmente um shell no contêiner de teste usando o comando:
composer docker-shellToda e qualquer alteração do projeto para lançamentos deve ser documentada abaixo. O versionamento segue o padrão SemVer.
[Mudanças no Git] Mudanças no README.
var_dump para demonstrar os tipos resultantes dentro da matriz retornada de UnitEnum::valueArray() .UnitEnum nos documentos em exemplos de código onde um Enum de teste não está presente. [Mudanças no Git] Lançamento inicial.