我正在开发一个 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
)