如何将int强制转换为PHP SPlEnum


How to cast int to PHP SPlEnum?

我有一个这样的枚举。

class TPNF_SplEnum  extends SplEnum {
    public static function InitList() {
        $instance = new static;
        static::$List = array_flip($instance->getConstList());
    }
    public static function GetName($key)     {
        return static::$List[$key];
    }
    public static function GetList() {
        return static::$List;
    }
}

class TPNF_Model_Url_ERelative extends TPNF_SplEnum {
    protected static $List;
    const __default = self::None;
    const None = 0;
    const Admin = 1;
    const Content = 2;
    const Includes = 3;
    const Plugins = 4;
    const Site = 5;
    const Theme = 6;
    const Themes = 7;
}

我想把一个int值强制转换到这个枚举中,但它不起作用。

$url->Relative = new TPNF_Model_Url_ERelative((int)'2');

输出(使用print_r):

TPNF_Model_Url_ERelative Object ( [__default] => 2 )

而不是

TPNF_Model_Url_ERelativeContent

我误解了SplEnum是什么。

您可以将它们的值指定给变量,但不能将它们本身指定为对象。

要将它们的值转换为常量名称,反之亦然,除了为此创建函数之外,别无选择。可能使用->getConstList 的函数