Erstellen Sie Enum aus dem Namen in PHP

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Erstellen Sie Enum aus dem Namen in PHP

by Anonymous » 23 Feb 2025, 16:59

In PHP 8.1 bietet BackEDeum eine aus und TryFrom Methode an, um eine Enum von einem Wert zu erhalten. Wie kann dasselbe durch nicht unterstützte Aufzüge erreicht werden?

Code: Select all

enum MainType: string
{
case Full = 'a';
case Major = 'b';
case Minor = 'c';
}

var_dump(MainType::tryFrom('a')); // MainType::Full
var_dump(MainType::tryFrom('d')); // null
Dies ist jedoch nicht für normale Aufzüge vorhanden.

Code: Select all

enum MainType
{
case Full;
case Major;
case Minor;
}

$name = (MainType::Full)->name
var_dump(name); // (string) Full
Eine Option, die ich gefunden habeenum MainType
{
case Full;
case Major;
case Minor;

public static function tryFromName(string $name): ?static
{
foreach (static::cases() as $case) {
if ($case->name === $name) {
return $case;
}
}

return null;
}
}

$name = (MainType::Full)->name
var_dump(name); // (string) Full
var_dump(MainType::tryFromName($name)); // MainType::Full
< /code>
Dies funktioniert, es wird jedoch intuitiv, um eine Foreach -Schleife zu ermöglichen, um alle Möglichkeiten zu durchlaufen, nur um einen Aufzähler zu erstellen. < /p>
daher ist die Frage, Was ist der richtige Weg, um einen Enum in PHP aus dem Namen zu bekommen.

Top