我正在开发一个 PHP 项目,其中很多类在类树中是高级别的,即它们有很多父类。
在某种程度上,考虑有一个类Food
,它有很多子类和子子类等。我想getFoodClasses()
在类Food
中实现一个方法,它给我一个导致当前实例的所有子类的数组,即类Food
和当前实例之间的树,包括后者。类Food
本身及其所有超类不应包含在结果中。
示例:如果一个子类Food
是Vegetable
,它有一个子类Fruit
,然后有一个子类Banana
,那么 on 的结果(Banana) $b->getFoodClasses()
需要产生 `array('Vegetable', 'Fruit', 'Banana')。
所以,
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
)