我寻找一个简单的解决方案来通过字符串获取枚举的情况。有 BackedEnums。例如:
<?php
enum Status: string
{
case OK = "OK";
case FAILED = "FAILED";
...
}
$status = Status::tryFrom("OK"); // or from("OK");
但我不想为了得到这个结果而写两次同一个词。在没有 BackedEnums 的情况下,是否有一种本地方法来获取案例?我想要类似的东西:
<?php
enum Status
{
case OK;
case FAILED;
...
}
$status = Status::get("OK"); //returns Status::OK;
还是我需要为此编写自己的功能?例如:
enum Status
{
case OK;
case FAILED;
public static function get(string $name): null|Status
{
$name = strtoupper(trim($name));
if(empty($name))
return null;
foreach(Status::cases() as $status)
{
if($status->name == $name)
return $status;
}
return null;
}
}
Status::get("OK"); // -> Status::OK
有没有更好的方法来实现同样的目标?