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
Code: Select all
enum MainType
{
case Full;
case Major;
case Minor;
}
$name = (MainType::Full)->name
var_dump(name); // (string) Full
{
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.