/** * @param \TokenReflection\IReflectionClass $class * * @return string */ public function writeElement(IReflectionClass $class) { $classString = $this->formatLine($this->writeAbstract($class) . $this->writeObjectType($class) . ' ' . $this->formatClassName($class->getName()) . ' {'); if ($this->constantWriter) { $constantReflections = $class->getOwnConstantReflections(); foreach ($class->getConstantReflections() as $otherConstantReflection) { /* @var $otherConstantReflection \TokenReflection\ReflectionConstant */ $otherConstantName = $otherConstantReflection->getName(); foreach ($constantReflections as $constantReflection) { if ($constantReflection->getName() === $otherConstantName) { // skip constants already defined in our current class continue 2; } } $constantReflections[] = $otherConstantReflection; } $classString .= $this->constantWriter->writeElements($constantReflections); } if ($this->propertyWriter) { $classString .= $this->propertyWriter->writeElements($class->getOwnProperties()); if ($this->docContentWriter) { $classString .= $this->docContentWriter->writeProperties($class); } } if ($this->methodWriter) { $classString .= $this->methodWriter->writeElements($class->getOwnMethods()); if ($this->docContentWriter) { $classString .= $this->docContentWriter->writeMethods($class); } } $classString .= $this->formatLine('}'); if ($class->getParentClassName()) { $classString .= $this->formatLine($this->writeObjectType($class) . ' ' . $this->formatClassName($class->getName()) . ' extends ' . $this->formatClassName($class->getParentClassName())); } if ($interfaceNames = $class->getOwnInterfaceNames()) { foreach ($interfaceNames as $interfaceName) { $classString .= $this->formatLine($this->writeObjectType($class) . ' ' . $this->formatClassName($class->getName()) . ' implements ' . $this->formatClassName($interfaceName)); } } return $classString; }
public function testWriteElements() { $this->assertEquals(" +{static}MY_CONSTANT_NAME = \"somevalue\"\n +{static}MY_CONSTANT_NAME = \"somevalue\"\n +{static}MY_CONSTANT_NAME = \"somevalue\"\n", $this->constantWriter->writeElements(array($this->getConstanctMock(), $this->getConstanctMock(), $this->getConstanctMock()))); }