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-enhancements
Para 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-build
Isso deve acionar o Docker Compose para construir a imagem. Você pode então aumentar o contêiner através do seguinte:
composer docker-up
Existem 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-local
Nesses 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-shell
Toda 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.