0

PHP にクラス階層があり、いくつかの親クラスで定数を定義しました。この例では定数が呼び出されると仮定しTYPEます。

TYPEクラスの 1 つが定義した可能性のある有効な値を渡してから、定数を定義した最も古い親クラス(その定数の「オリジン クラス」と呼んでいるもの) を取得できるようにしたいと考えています。次のコードを書いて動作しますが、重く感じます。これを行うためのより良い、よりパフォーマンスの高い方法があるかどうか疑問に思っていましたか?

<?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
4

0 に答える 0