{
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));
+ }
}
}
}