Un package Composer pour PHP qui ajoute quelques traits d'énumération utiles au glorieux nouveau type PHP Enum.
Le package fournit jusqu'à présent ;
UnitEnum::valueArray(): array
qui renvoie toutes les valeurs d'un Enum sous la forme d'un tableau de valeurs Enum de même type.UnitEnum::valueList(string $separator = ', '): string
qui renvoie toutes les valeurs d'un Enum sous forme de chaîne de liste séparée par des virgulesLe package est disponible sur Packagist sous le nom othyn/php-enum-enhancements.
Accédez au projet dans lequel vous souhaitez l'installer et exécutez la commande Composer suivante pour récupérer la dernière version :
composer require othyn/php-enum-enhancements
Pour des exemples d’utilisation plus complets, vous pouvez consulter la suite de tests. Cependant, je vais montrer quelques exemples d'utilisation de base ci-dessous.
<?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"
La plupart des processus de développement sont regroupés dans un conteneur Docker facile à utiliser.
La configuration du projet .php-cs-fixer.dist.php
contient les règles auxquelles ce référentiel se conforme et s'exécutera sur les répertoires ./src
et ./tests
.
Pour l'application du style à distance, une action GitHub est configurée pour exécuter automatiquement phpcsfixer
.
Pour l'application du style local, il existe un composer style
de script configuré pour exécuter phpcsfixer
.
Pour les tests à distance, il existe une configuration GitHub Action pour exécuter automatiquement la suite de tests sur la branche main
ou sur les branches PR.
Pour les tests locaux, il existe un conteneur Docker pré-construit qui contient une version Alpine CLI de PHP + PHPUnit + xdebug. Ceci est configuré pour tester le projet et peut être configuré via les éléments suivants :
composer docker-build
Cela devrait déclencher Docker Compose pour créer l'image. Vous pouvez ensuite remonter le conteneur via les éléments suivants :
composer docker-up
Il existe des tests pour tout le code écrit, qui peuvent être exécutés via :
# PHPUnit with code coverage report
composer test
# PHPUnit with code coverage report, using local phpunit and xdebug
composer test-local
Dans ces tests, il existe des tests de fonctionnalités pour une implémentation du package prête pour la production. Il n’y a pas de tests unitaires pour le moment.
Vous pouvez également facilement ouvrir un shell dans le conteneur de test en utilisant la commande :
composer docker-shell
Toutes les modifications apportées au projet pour les versions doivent être documentées ci-dessous. La gestion des versions suit la norme SemVer.
[Modifications Git] Modifications du fichier README.
var_dump
pour démontrer les types résultants dans le tableau renvoyé par UnitEnum::valueArray()
.UnitEnum
dans la documentation dans des exemples de code où un Enum de test n'est pas présent. [Modifications Git] Version initiale.