/** * Find parent module by OOP class inheritance. * * @param string $className Class name for searching parent modules * @param array $ignoredClasses Collection of ignored classes * * @return null|mixed Parent service instance if present */ protected function getClassParentModule(Container $container, $className, array $ignoredClasses = [ExternalModule::class, CompressableExternalModule::class, \samson\core\Service::class, CompressableService::class]) { // Skip ignored class names if (!in_array($className, $ignoredClasses, true)) { try { $instance = $container->get(trim($className)); $instance->parent = $this->getClassParentModule($container, get_parent_class($instance)); return $instance; } catch (\Exception $exception) { return null; } // // Iterate loaded services // foreach ($container->getServices('module') as $service) { // if (get_class($service) === $className) { // return $service; // } // } } return null; }