2012-08-24 106 views
1

我有一個簡單的枚舉類,它定義了一些常量,但我希望有幾個靜態方法提供對枚舉的反射,所以程序員。獲取子類名稱?

我能問鍵做什麼此枚舉有?等等

我已經實現了這一點,它像宣傳的那樣。目前爲止,但我真的很想擁有一個Enum類的基礎,這些方法的實現存在,並且我的所有枚舉都可以擴展它並從中受益。

不幸的是,當我這樣做的時候,魔術變量返回基類並混淆了反射。我想要的是返回子類的函數,但任何可行的方法對我來說都很好。

這裏的類定義:

final class LG_NutritionalValues 
{ 
    // ENUMERATION 
    const Calories = 1; 
    const Fat = 2; 
    const Carbohydrates = 3; 
    const Etc = 999; 

    public static function is_valid_key ($value) { 
    $reflect = new ReflectionClass (__CLASS__); 
    return in_array ($value , array_keys($reflect->getConstants())); 
    } 
    public static function list_keys() { 
    $reflect = new ReflectionClass (__CLASS__); 
    return array_keys($reflect->getConstants()); 
    } 

} // END enum class 

回答

0

由於PHP 5.3,你可以使用get_called_class()

+0

正是我需要的,我應該能夠住在一起PHP5.3約束。謝謝! – ken

+0

太好了,不客氣:) – Asciiom