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.
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]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
[/code]
Dies ist jedoch nicht für normale Aufzüge vorhanden.
[code]enum MainType
{
case Full;
case Major;
case Minor;
}
$name = (MainType::Full)->name
var_dump(name); // (string) Full
[/code]
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.