/** * Creates a Descriptor from the provided data. * * @param InterfaceReflector $data * * @return InterfaceDescriptor */ public function create($data) { $interfaceDescriptor = new InterfaceDescriptor(); $interfaceDescriptor->setFullyQualifiedStructuralElementName($data->getName()); $interfaceDescriptor->setName($data->getShortName()); $interfaceDescriptor->setLine($data->getLinenumber()); $interfaceDescriptor->setPackage($this->extractPackageFromDocBlock($data->getDocBlock()) ?: ''); // Reflection library formulates namespace as global but this is not wanted for phpDocumentor itself $interfaceDescriptor->setNamespace('\\' . (strtolower($data->getNamespace()) == 'global' ? '' : $data->getNamespace())); $this->assembleDocBlock($data->getDocBlock(), $interfaceDescriptor); $this->addConstants($data->getConstants(), $interfaceDescriptor); $this->addMethods($data->getMethods(), $interfaceDescriptor); foreach ($data->getParentInterfaces() as $interfaceClassName) { $interfaceDescriptor->getParent()->set($interfaceClassName, $interfaceClassName); } return $interfaceDescriptor; }
private function registerReflectors(InterfaceReflector $reflector) { if (!$this->reflector) { $this->reflector = $reflector; } $loader = $this->autoLoader; /** * @var $method MethodReflector */ $reflector->getName(); foreach ($reflector->getMethods() as $method) { $this->data['methods'][$method->getShortName()][] = $method; } if ($reflector instanceof ClassReflector || $reflector instanceof TraitReflector) { if ($parent = $reflector->getParentClass()) { $filename = $loader($parent); if (is_readable($filename)) { $parser = $this->parserFactory->newInstance($filename, $loader); $this->data = array_merge_recursive($this->data, $parser->getData()); } } if ($traits = $reflector->getTraits()) { foreach ($traits as $trait) { $filename = $loader($trait); if (is_readable($filename)) { $parser = $this->parserFactory->newInstance($filename, $loader); $this->data = array_merge_recursive($this->data, $parser->getData()); } } } } if (method_exists($reflector, 'getInterfaces')) { foreach ($reflector->getInterfaces() as $interface) { $filename = $loader($interface); if (is_readable($filename)) { $parser = $this->parserFactory->newInstance($filename, $loader); $this->data = array_merge_recursive($this->data, $parser->getData()); } } } }