/** * 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; }
/** * Exports the given reflection object to the parent XML element. * * This method creates a new child element on the given parent XML element * and takes the properties of the Reflection argument and sets the * elements and attributes on the child. * * If a child DOMElement is provided then the properties and attributes are * set on this but the child element is not appended onto the parent. This * is the responsibility of the invoker. Essentially this means that the * $parent argument is ignored in this case. * * @param \DOMElement $parent The parent element to augment. * @param ConstantReflector $constant The data source. * @param \DOMElement $child Optional: child element to use * instead of creating a new one on the $parent. * * @return void */ public function export(\DOMElement $parent, $constant, \DOMElement $child = null) { if (!$constant->getName()) { return; } if (!$child) { $child = new \DOMElement('constant'); $parent->appendChild($child); } $child->setAttribute('namespace', $constant->getNamespace() ? $constant->getNamespace() : $parent->getAttribute('namespace')); $child->setAttribute('line', $constant->getLineNumber()); $short_name = method_exists($constant, 'getShortName') ? $constant->getShortName() : $constant->getName(); $child->appendChild(new \DOMElement('name', $short_name)); $child->appendChild(new \DOMElement('full_name', $constant->getName())); $child->appendChild(new \DOMElement('value'))->appendChild(new \DOMText($constant->getValue())); $object = new DocBlockExporter(); $constant->setDefaultPackageName($parent->getAttribute('package')); $object->export($child, $constant); }