diff options
author | Marcus Boerger <helly@php.net> | 2005-10-21 23:42:56 +0000 |
---|---|---|
committer | Marcus Boerger <helly@php.net> | 2005-10-21 23:42:56 +0000 |
commit | 581d856af7dd1a1972832651af1f0510177ba9ba (patch) | |
tree | b72b296def675e77b996a99091625dd222e8aca4 | |
parent | aff2ed53caf49e3802d33f19f31641593018ca6f (diff) | |
download | php-git-581d856af7dd1a1972832651af1f0510177ba9ba.tar.gz |
- Do not include because of implementing an interface if parent implements
the interface already
-rwxr-xr-x | ext/spl/examples/class_tree.php | 12 |
1 files 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)); + } } } } |