/** * @return string */ protected function parseDeprecationNote() { if ($this->classReflection->isTaggedWith('deprecated')) { return implode(', ', $this->classReflection->getTagValues('deprecated')); } else { return ''; } }
/** * Generate the XML Schema for a given class name. * * @param string $className Class name to generate the schema for. * @param string $viewHelperNamespace 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 */ protected function generateXmlForClassName($className, $viewHelperNamespace, \SimpleXMLElement $xmlRootNode) { $reflectionClass = new ClassReflection($className); if (!$reflectionClass->isSubclassOf($this->abstractViewHelperReflectionClass)) { return; } $tagName = $this->getTagNameForClass($className, $viewHelperNamespace); $xsdElement = $xmlRootNode->addChild('xsd:element'); $xsdElement['name'] = $tagName; $this->docCommentParser->parseDocComment($reflectionClass->getDocComment()); $this->addDocumentation($this->docCommentParser->getDescription(), $xsdElement); $xsdComplexType = $xsdElement->addChild('xsd:complexType'); $xsdComplexType['mixed'] = 'true'; $xsdSequence = $xsdComplexType->addChild('xsd:sequence'); $xsdAny = $xsdSequence->addChild('xsd:any'); $xsdAny['minOccurs'] = '0'; $xsdAny['maxOccurs'] = 'unbounded'; $this->addAttributes($className, $xsdComplexType); }
private function getGetterMethodsForClass($className) { if (isset($this->getterMethodsForClass[$className])) { return $this->getterMethodsForClass[$className]; } $class = new ClassReflection($className); $this->getterMethodsForClass[$className] = []; foreach ($class->getMethods() as $method) { /** @var MethodReflection $method */ $name = $method->getName(); $key = NULL; if (substr($name, 0, 3) === 'get') { $key = substr($name, 3); } elseif (substr($name, 0, 2) === 'is') { $key = substr($name, 2); } if ($key !== NULL && $method->getNumberOfRequiredParameters() === 0) { $this->getterMethodsForClass[$className][lcfirst($key)] = $name; } } return $this->getterMethodsForClass[$className]; }
/** * Finds all parent classes of the given class * * @param ClassReflection $class The class to reflect * @param array $parentClasses Array of parent classes * @return array<ClassReflection> */ protected function getParentClasses(ClassReflection $class, array $parentClasses = []) { $parentClass = $class->getParentClass(); if ($parentClass !== false) { $parentClasses[] = $parentClass; $parentClasses = $this->getParentClasses($parentClass, $parentClasses); } return $parentClasses; }
/** * @test */ public function proxiedMethodsDoContainAnnotationsOnlyOnce() { $class = new ClassReflection(\TYPO3\Flow\Tests\Functional\Object\Fixtures\PrototypeClassA::class); $method = $class->getMethod('setSomeProperty'); $this->assertEquals(array('autoStart=true'), $method->getTagValues('session')); }
/** * @return ClassReflection */ protected function getCommandReflection() { if ($this->commandReflection === NULL) { $commandReflection = new ClassReflection($this->controllerCommandName); $this->commandReflection = $commandReflection->getParentClass(); } return $this->commandReflection; }
/** * @test */ public function proxiedFinalClassesAreStillFinal() { $reflectionClass = new ClassReflection(FinalClassWithDependencies::class); $this->assertTrue($reflectionClass->isFinal()); }