/** * Creates a Descriptor from the provided data. * * @param ConstantReflector $data * * @return ConstantDescriptor */ public function create($data) { $constantDescriptor = new ConstantDescriptor(); $constantDescriptor->setName($data->getShortName()); $constantDescriptor->setValue($data->getValue()); // Reflection library formulates namespace as global but this is not wanted for phpDocumentor itself $constantDescriptor->setNamespace('\\' . (strtolower($data->getNamespace()) == 'global' ? '' : $data->getNamespace())); $constantDescriptor->setFullyQualifiedStructuralElementName((trim($constantDescriptor->getNamespace(), '\\') ? $constantDescriptor->getNamespace() : '') . '\\' . $data->getShortName()); $this->assembleDocBlock($data->getDocBlock(), $constantDescriptor); $constantDescriptor->setLine($data->getLinenumber()); return $constantDescriptor; }
/** * @covers phpDocumentor\Compiler\Pass\NamespaceTreeBuilder::execute * @covers phpDocumentor\Compiler\Pass\NamespaceTreeBuilder::addElementsOfTypeToNamespace */ public function testAddConstantToNamespace() { $constant = new ConstantDescriptor(); $constant->setNamespace('My\\Space'); $constant->setFullyQualifiedStructuralElementName('My\\Space\\Constant1'); $this->project->getFiles()->get(0)->getConstants()->add($constant); // double check if a second constant in the same deep namespace ends up at the right location $constant2 = new ConstantDescriptor(); $constant2->setNamespace('My\\Space'); $constant2->setFullyQualifiedStructuralElementName('My\\Space\\Constant2'); $this->project->getFiles()->get(0)->getConstants()->add($constant2); $this->fixture->execute($this->project); $this->assertSame(array($constant, $constant2), $this->project->getNamespace()->getChildren()->get('My')->getChildren()->get('Space')->getConstants()->getAll()); }