private function loadDefinitions(ContainerBuilder $builder) { $classes = $this->robotLoader->getIndexedClasses(); $markerInterface = new ClassType(IServiceMarker::class); foreach ($classes as $key => $val) { if (Strings::endsWith($key, 'Service')) { $reflection = new ClassType($key); $serviceName = '_auto.' . str_replace("\\", "_", $key); if (!$reflection->isAbstract() && $reflection->isSubclassOf($markerInterface)) { $builder->addDefinition($serviceName)->setClass($key); } } } }
/** * Returns all parameters of the constructor which type is dao object. * * @param string $class * @return array array of parameter's names */ private function findConstructorDaoParameters($class) { $reflection = new Reflection($class); $daoParameters = array(); foreach ($reflection->constructor->parameters as $parameter) { $parameterClass = $parameter->getClassName(); if ($parameterClass) { $parameterReflection = new Reflection($parameterClass); if ($parameterReflection->getName() === self::DAO_CLASS || $parameterReflection->isSubclassOf(self::DAO_CLASS)) { $daoParameters[] = $parameter->getName(); } } } return $daoParameters; }