1

我想知道为什么无法__toString为枚举提供实现。

IDE 说“枚举可能不包括 '__toString'”。然而,这是我创建枚举后首先想到的。以前我在代码中使用值对象封装字符串,必要时使用字符串转换。现在我想将它们迁移到枚举中,但那些抵制。

#[Immutable]
enum SaveKlinesFromApiQueue: string
{
    case DEFAULT = 'save_klines_from_api_queue';
    case PRIORITY = 'save_klines_from_api_priority_queue';

    public function __toString(): string
    {
        return $this->value;
    }
}
4

1 回答 1

0

正如克里斯所提到的,魔法方法是不允许的。

对于 2 个最常见的(?)用例:

要获取单个字符串的值,您可以使用->value.

如果您想要所有这些的字符串值,只需在方法中添加一个循环:

    public static function strings(): array
    {
        $strings = [];
        foreach(self::cases() as $case) {
            $strings[] = $case->value;
        }
        return $strings;
    }
于 2022-02-07T22:02:02.683 回答