我有一个这样的枚举。
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
的函数