summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Boerger <helly@php.net>2005-10-21 23:42:56 +0000
committerMarcus Boerger <helly@php.net>2005-10-21 23:42:56 +0000
commit581d856af7dd1a1972832651af1f0510177ba9ba (patch)
treeb72b296def675e77b996a99091625dd222e8aca4
parentaff2ed53caf49e3802d33f19f31641593018ca6f (diff)
downloadphp-git-581d856af7dd1a1972832651af1f0510177ba9ba.tar.gz
- Do not include because of implementing an interface if parent implements
the interface already
-rwxr-xr-xext/spl/examples/class_tree.php12
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));
+ }
}
}
}