Erstellen Sie Enum aus dem Namen in PHPPhp

PHP-Programmierer chatten hier
Anonymous
 Erstellen Sie Enum aus dem Namen in PHP

Post by Anonymous »

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.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post