/** * Generate the XML Schema for a given class name. * * @param string $className Class name to generate the schema for. * @param string $namespace Namespace prefix. Used to split off the first parts of the class name. * @param SimpleXMLElement $xmlRootNode XML root node where the xsd:element is appended. * @return void * @author Sebastian Kurfürst <*****@*****.**> */ protected function generateXmlForClassName($className, $namespace, SimpleXMLElement $xmlRootNode) { $reflectionClass = new Tx_Extbase_Reflection_ClassReflection($className); if (!$reflectionClass->isSubclassOf($this->abstractViewHelperReflectionClass)) { return; } $tagName = $this->getTagNameForClass($className, $namespace); $docbookSection = $xmlRootNode->addChild('section'); $docbookSection->addChild('title', $tagName); $this->docCommentParser->parseDocComment($reflectionClass->getDocComment()); $this->addDocumentation($this->docCommentParser->getDescription(), $docbookSection); $argumentsSection = $docbookSection->addChild('section'); $argumentsSection->addChild('title', 'Arguments'); $this->addArguments($className, $argumentsSection); return $docbookSection; }
/** * Replacement for the original getProperties() method which makes sure * that Tx_Extbase_Reflection_PropertyReflection objects are returned instead of the * orginal ReflectionProperty instances. * * @param long $filter: A filter mask * @return array of Tx_Extbase_Reflection_PropertyReflection Property reflection objects of the properties in this class */ public function getProperties($filter = NULL) { $extendedProperties = array(); $properties = $filter === NULL ? parent::getProperties() : parent::getProperties($filter); foreach ($properties as $property) { $extendedProperties[] = new Tx_ExtensionBuilder_Reflection_PropertyReflection($this->getName(), $property->getName()); } return $extendedProperties; }
/** * Reflects the given class and stores the results in this service's properties. * * @param string $className Full qualified name of the class to reflect * @return void */ protected function reflectClass($className) { $class = new Tx_Extbase_Reflection_ClassReflection($className); $this->reflectedClassNames[$className] = time(); foreach ($class->getTagsValues() as $tag => $values) { if (array_search($tag, $this->ignoredTags) === FALSE) { $this->taggedClasses[$tag][] = $className; $this->classTagsValues[$className][$tag] = $values; } } foreach ($class->getProperties() as $property) { $propertyName = $property->getName(); $this->classPropertyNames[$className][] = $propertyName; foreach ($property->getTagsValues() as $tag => $values) { if (array_search($tag, $this->ignoredTags) === FALSE) { $this->propertyTagsValues[$className][$propertyName][$tag] = $values; } } } foreach ($class->getMethods() as $method) { $methodName = $method->getName(); foreach ($method->getTagsValues() as $tag => $values) { if (array_search($tag, $this->ignoredTags) === FALSE) { $this->methodTagsValues[$className][$methodName][$tag] = $values; } } foreach ($method->getParameters() as $parameterPosition => $parameter) { $this->methodParameters[$className][$methodName][$parameter->getName()] = $this->convertParameterReflectionToArray($parameter, $parameterPosition, $method); } } ksort($this->reflectedClassNames); $this->dataCacheNeedsUpdate = TRUE; }