public function processContainerBuilder(GenerationContext $context) { $annotation = $context->getAnnotation(); /* @var $annotation \Nucleus\Bundle\ConsoleBundle\Command\CommandLine */ $serviceName = $context->getServiceName(); $methodName = $context->getParsingContextName(); $definition = $context->getContainerBuilder()->getDefinition($serviceName); $shortDesc = 'N/A'; $reflectedMethod = new \ReflectionMethod($definition->getClass(), $methodName); $methodComment = $reflectedMethod->getDocComment(); $paramArrayComments = array(); if ($methodComment !== false) { list($shortDesc, $paramArrayComments) = $this->parseBlockDocComment($methodComment); } $paramsArray = array(); foreach ($reflectedMethod->getParameters() as $reflectionParameter) { if ($reflectionParameter->getClass()) { continue; } $paramComment = 'N/A'; if (isset($paramArrayComments[$reflectionParameter->getName()])) { $paramComment = $paramArrayComments[$reflectionParameter->getName()]; } $paramsArray[$reflectionParameter->getName()]['optional'] = false; if ($reflectionParameter->isDefaultValueAvailable()) { $paramsArray[$reflectionParameter->getName()]['optional'] = true; } $paramsArray[$reflectionParameter->getName()]['comment'] = $paramComment; } if (!empty($annotation->name)) { $name = $annotation->name; } else { $name = $serviceName . ':' . $methodName; } if ($context->getContainerBuilder()->hasParameter(self::CONTAINER_COMMANDS_PARAMETER)) { $commands = $context->getContainerBuilder()->getParameter(self::CONTAINER_COMMANDS_PARAMETER); } else { $commands = array(); } $commands[] = compact('name', 'shortDesc', 'paramsArray', 'serviceName', 'methodName'); $context->getContainerBuilder()->setParameter(self::CONTAINER_COMMANDS_PARAMETER, $commands); }