获取在PHP中定义CONST的祖先类名?

时间:2013-10-31 19:32:09

标签: php reflection class-constants

我在PHP中有一个类层次结构,在我定义了一个常量的一些父类中,让我们假设我的例子中为常量调用了TYPE

我希望能够为我的一个类可能已定义的TYPE传递一个有效值,然后返回定义常量的最老的最大父类(我正在调用的内容)这个常数的“原始类”。)我写了下面的代码并且它有效,但感觉很重,我想知道是否有更好,更高效的方法来做到这一点?

<?php

class Foo {
    const TYPE = 'idiom';
}

class Bar extends Foo {}

class Baz extends Bar {}

function get_type_origin_class( $class, $type ) {
  $origin_class = false;
  $ref = new ReflectionClass( $class );
  while ( $ref && $type == $ref->getConstant( 'TYPE' ) ) {
    $origin_class = $ref->getName();
    $ref = $ref->getParentClass();
  }
  return $origin_class;
}

echo get_type_origin_class( 'Baz', 'idiom' ); // Echos: Foo
echo get_type_origin_class( 'Bar', 'idiom' ); // Echos: Foo
echo get_type_origin_class( 'Foo', 'idiom' ); // Echos: Foo

0 个答案:

没有答案