2012-08-24 105 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