获取子类名称?

时间:2012-08-24 14:48:13

标签: php

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

我可以问这个枚举有什么键吗?等等。

我已经实现了它,它的工作方式与宣传的一样。到目前为止很棒,但我真的希望有一个基本的枚举类,这些方法的实现存在,我的所有枚举都可以扩展它并从中受益。

不幸的是,当我这样做时, 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 

1 个答案:

答案 0 :(得分:0)

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