diff --git a/src/HasParent.php b/src/HasParent.php index 94cbfc0..b40f9e0 100644 --- a/src/HasParent.php +++ b/src/HasParent.php @@ -146,6 +146,21 @@ protected function getParentClass(): string { static $parentClassName; - return $parentClassName ?: $parentClassName = (new ReflectionClass($this))->getParentClass()->getName(); + if ($parentClassName) { + return $parentClassName; + } else { + $class = new ReflectionClass($this); + + $firstParent = $class->getParentClass(); + while ($parent = $class->getParentClass()) { + if (in_array(\Parental\HasChildren::class, $parent->getTraitNames())) { + return $parent->getName(); + } + + $class = $parent; + } + + return $firstParent; + } } }