Browse Source

- Do not include because of implementing an interface if parent implements

the interface already
migration/RELEASE_1_0_0
Marcus Boerger 21 years ago
parent
commit
581d856af7
  1. 12
      ext/spl/examples/class_tree.php

12
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));
}
}
}
}

Loading…
Cancel
Save