2015-03-03 35 views
1

我有這樣的枚舉。如何將int轉換爲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 
+0

print_r()將不會返回所需內容... print_r()具有固定的顯示輸出格式,具體取決於所顯示的數據類型。 – 2015-03-03 11:21:05

+1

你可能想要做的是爲你的類添加一個魔術__toString()方法,它會返回適當的值 – 2015-03-03 11:24:04

回答

0

我有誤解是什麼SplEnum。

您可以將它們的值分配給變量,但不能將它們自己看作是對象。

要將它們的值從常數名稱轉換爲常數名稱,反之亦然,除了爲其創建函數外,沒有別的辦法。可能正在使用的函數->getConstList