From 581d856af7dd1a1972832651af1f0510177ba9ba Mon Sep 17 00:00:00 2001 From: Marcus Boerger Date: Fri, 21 Oct 2005 23:42:56 +0000 Subject: [PATCH] - Do not include because of implementing an interface if parent implements the interface already --- ext/spl/examples/class_tree.php | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/ext/spl/examples/class_tree.php b/ext/spl/examples/class_tree.php index b57eba373e..c530112f47 100755 --- a/ext/spl/examples/class_tree.php +++ b/ext/spl/examples/class_tree.php @@ -33,17 +33,25 @@ class SubClasses extends RecursiveArrayIterator { foreach(get_declared_classes() as $cname) { - if (strcasecmp(get_parent_class($cname), $base) == 0) + $parent = get_parent_class($cname); + if (strcasecmp($parent, $base) == 0) { $this->offsetSet($cname, new SubClasses($cname)); } if ($check_interfaces) { + if ($parent) + { + $parent_imp = class_implements($parent); + } foreach(class_implements($cname) as $iname) { if (strcasecmp($iname, $base) == 0) { - $this->offsetSet($cname, new SubClasses($cname)); + if (!$parent || !in_array($iname, $parent_imp)) + { + $this->offsetSet($cname, new SubClasses($cname)); + } } } } -- 2.50.1