Ein Composer-Paket für PHP, das dem großartigen neuen PHP-Enum-Typ einige hilfreiche Enum-Eigenschaften hinzufügt.
Das Paket bietet bisher;
UnitEnum::valueArray(): array
-Methode hinzu, die alle Werte innerhalb einer Aufzählung als gleich typisiertes Array von Aufzählungswerten zurückgibtUnitEnum::valueList(string $separator = ', '): string
Methode hinzu, die alle Werte innerhalb einer Aufzählung als durch Kommas getrennte Listenzeichenfolge zurückgibtDas Paket ist auf Packagist als othyn/php-enum-enhancements verfügbar.
Gehen Sie zu Ihrem Projekt, in dem Sie es installieren möchten, und führen Sie den folgenden Composer-Befehl aus, um die neueste Version abzurufen:
composer require othyn/php-enum-enhancements
Umfassendere Anwendungsbeispiele finden Sie in der Testsuite. Im Folgenden werde ich jedoch einige grundlegende Anwendungsbeispiele zeigen.
<?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"
Die meisten Entwicklungsprozesse sind in einem benutzerfreundlichen Docker-Container zusammengefasst.
Die Projektkonfiguration .php-cs-fixer.dist.php
enthält die Regeln, denen dieses Repo entspricht, und wird im Verzeichnis ./src
und ./tests
ausgeführt.
Für die Durchsetzung des Remote-Stils gibt es eine GitHub-Aktion, die so konfiguriert ist, dass sie phpcsfixer
automatisch ausführt.
Für die Durchsetzung des lokalen Stils gibt es einen Composer-Skript- composer style
der für die Ausführung phpcsfixer
konfiguriert ist.
Für Remote-Tests gibt es ein GitHub-Aktionssetup, um die Testsuite automatisch im main
oder in PR-Zweigen auszuführen.
Für lokale Tests gibt es einen vorgefertigten Docker-Container, der eine Alpine-CLI-Version von PHP + PHPUnit + xdebug enthält. Dies dient zum Testen des Projekts und kann wie folgt eingerichtet werden:
composer docker-build
Dies sollte Docker Compose dazu veranlassen, das Image zu erstellen. Anschließend können Sie den Container wie folgt aufrüsten:
composer docker-up
Für den gesamten geschriebenen Code gibt es Tests, die wie folgt ausgeführt werden können:
# PHPUnit with code coverage report
composer test
# PHPUnit with code coverage report, using local phpunit and xdebug
composer test-local
Bei diesen Tests handelt es sich um Funktionstests für eine produktionsreife Implementierung des Pakets. Derzeit gibt es keine Unit-Tests.
Sie können eine Shell im Testcontainer auch einfach öffnen, indem Sie den folgenden Befehl verwenden:
composer docker-shell
Alle Projektänderungen für Releases sollten unten dokumentiert werden. Die Versionierung folgt dem SemVer-Standard.
[Git-Änderungen] README-Änderungen.
var_dump
zu verwenden, um die resultierenden Typen innerhalb des von UnitEnum::valueArray()
zurückgegebenen Arrays zu demonstrieren.UnitEnum
Basistyp wurde in den Dokumenten in Codebeispielen verwendet, in denen kein Test-Enum vorhanden ist. [Git-Änderungen] Erstveröffentlichung.