From: Marcus Boerger Date: Fri, 21 Oct 2005 23:42:56 +0000 (+0000) Subject: - Do not include because of implementing an interface if parent implements X-Git-Tag: RELEASE_0_9_1~44 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=581d856af7dd1a1972832651af1f0510177ba9ba;p=php - Do not include because of implementing an interface if parent implements the interface already --- 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)); + } } } }