많은 클래스가 클래스 트리에서 상위 수준으로 정렬되어있는 PHP 프로젝트, 즉 상위 클래스가 많이 있습니다. 내가 나에게로 이어질 모든 서브 클래스의 배열을 제공합니다 클래스 Food
의 방법 getFoodClasses()
을 구현하려는 서브 클래스 및 하위 서브 클래스 등의 꽤 많이 가지고있는 클래스 Food
이,이 고려 어떤 수준에서 클래스와 서브 클래 싱 중 하나의 인스턴스 사이에 서브 클래스의 경로를 찾는 방법은 무엇입니까?
Food
사이의 트리에있는 클래스와 현재 인스턴스 (후자 포함).
Food
클래스 자체와 모든 상위 클래스가 결과에 포함되지 않아야합니다.
예 : Food
의 서브 클래스 다음 서브 Banana
을 갖는 서브 Fruit
을 가지고 Vegetable
을 것이 있다면, (Banana) $b->getFoodClasses()
에서의 결과는 (배열 '에서'야채 ','과일 '발생할 필요가 '바나나').
그래서, 결과
class Food extends SomeBaseClass
{
public function getFoodClasses()
{
/* Here goes the magic! */
}
}
class Vegetable extends Food {}
class Fruit extends Vegetable {}
class Banana extends Fruit {}
$b = new Banana;
print_r($b->getFoodClasses());
: 반사를 사용하지 않고
Array
(
[0] => Vegetable
[1] => Fruit
[2] => Banana
)
PHP 내장 함수가 이것을 달성 할 수 있다는 것을 알기가 매우 좋습니다. 지금 SPL을 사용하는 것처럼 솔루션을 사용하지는 않겠지 만 코드를 보면 꼭해야 할 일을하는 것처럼 보입니다. 하나는 성능에 관해서 어떤 것이 유리한 지 알아보기 위해 두 구현 모두에서 벤치 마크를 수행하는 것이 이상적입니다. –