/** * Creates a Descriptor from the provided data. * * @param PropertyReflector $data * * @return PropertyDescriptor */ public function create($data) { $propertyDescriptor = new PropertyDescriptor(); $propertyDescriptor->setFullyQualifiedStructuralElementName($data->getName()); $propertyDescriptor->setName($data->getShortName()); $propertyDescriptor->setVisibility($data->getVisibility() ?: 'public'); $propertyDescriptor->setStatic($data->isStatic()); $propertyDescriptor->setDefault($data->getDefault()); $this->assembleDocBlock($data->getDocBlock(), $propertyDescriptor); $propertyDescriptor->setLine($data->getLinenumber()); return $propertyDescriptor; }
/** * @covers phpDocumentor\Compiler\Pass\ElementsIndexBuilder::execute * @covers phpDocumentor\Compiler\Pass\ElementsIndexBuilder::addElementsToIndexes * @covers phpDocumentor\Compiler\Pass\ElementsIndexBuilder::getIndexKey * @covers phpDocumentor\Compiler\Pass\ElementsIndexBuilder::getSubElements */ public function testAddPropertiesToIndex() { $file1 = $this->project->getFiles()->get(0); $classDescriptor1 = new ClassDescriptor(); $classDescriptor1->setFullyQualifiedStructuralElementName('My\\Space\\Class1'); $file1->getClasses()->add($classDescriptor1); $classPropertyDescriptor1 = new PropertyDescriptor(); $classPropertyDescriptor1->setFullyQualifiedStructuralElementName('My\\Space\\Class1::PROPERTY'); $classDescriptor1->getProperties()->add($classPropertyDescriptor1); $file2 = $this->project->getFiles()->get(1); $classDescriptor2 = new ClassDescriptor(); $classDescriptor2->setFullyQualifiedStructuralElementName('My\\Space\\Class2'); $file2->getClasses()->add($classDescriptor2); $classPropertyDescriptor2 = new PropertyDescriptor(); $classPropertyDescriptor2->setFullyQualifiedStructuralElementName('My\\Space\\Class2::PROPERTY'); $classDescriptor2->getProperties()->add($classPropertyDescriptor2); $this->fixture->execute($this->project); $elements = $this->project->getIndexes()->get('elements')->getAll(); $this->assertCount(4, $elements); // note the addition of the dollar sign in front of the property name $this->assertSame(array('My\\Space\\Class1', 'My\\Space\\Class1::$PROPERTY', 'My\\Space\\Class2', 'My\\Space\\Class2::$PROPERTY'), array_keys($elements)); $this->assertSame(array($classDescriptor1, $classPropertyDescriptor1, $classDescriptor2, $classPropertyDescriptor2), array_values($elements)); // class properties are not indexed separately $this->assertNull($this->project->getIndexes()->get('properties')); }