/**
  * 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;
 }
示例#2
0
 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());
             }
         }
     }
 }