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