1

我有一个简单的枚举类,它定义了一些常量,但我想有一些静态方法提供对枚举的反射,以便程序员。

请问这个枚举有什么键?等

我已经实现了这个,它像宣传的那样工作。到目前为止很棒,但我真的很想有一个基本的 Enum 类,其中存在这些方法的实现,并且我的所有 Enum 都可以扩展它并从中受益。

不幸的是,当我这样做时,CLASS魔术变量会返回基类并弄乱反射。我想要的是一个返回子类的函数,但任何可行的方法对我来说都很好。

这是类定义:

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 
4

1 回答 1

0

从 php 5.3 开始,您可以使用get_call_class()

于 2012-08-24T14:53:32.460 回答