protected function handleProperty(Generator\ClassGenerator $class, PHPProperty $prop) { $generatedProp = new PropertyGenerator($prop->getName()); $generatedProp->setVisibility(PropertyGenerator::VISIBILITY_PROTECTED); if (!$class->hasProperty($prop->getName())) { $class->addPropertyFromGenerator($generatedProp); } else { $generatedProp = $class->getProperty($prop->getName()); } $docBlock = new DocBlockGenerator(); $generatedProp->setDocBlock($docBlock); if ($prop->getDoc()) { $docBlock->setLongDescription($prop->getDoc()); } $tag = new Generator\DocBlock\Tag(); $tag->setName("@var {$this->getPropertyType($prop)}"); $docBlock->setTag($tag); $type = $prop->getType(); if ($type->type && $this->isTypeMapped($type->type->getName())) { if (!$class->hasProperty('_typeMap')) { $generatedProp = new PropertyGenerator('_typeMap'); $generatedProp->setDefaultValue([]); $generatedProp->setVisibility(PropertyGenerator::VISIBILITY_PROTECTED); $class->addPropertyFromGenerator($generatedProp); } $property = $class->getProperty('_typeMap'); $defaultValue = $property->getDefaultValue()->getValue(); $defaultValue[$prop->getName()] = $type->type->getName(); $property->setDefaultValue($defaultValue); } }
private function handleProperty(Generator\ClassGenerator $class, PHPProperty $prop) { $generatedProp = new PropertyGenerator($prop->getName()); $generatedProp->setVisibility(PropertyGenerator::VISIBILITY_PRIVATE); $class->addPropertyFromGenerator($generatedProp); if ($prop->getType() && (!$prop->getType()->getNamespace() && $prop->getType()->getName() == "array")) { // $generatedProp->setDefaultValue(array(), PropertyValueGenerator::TYPE_AUTO, PropertyValueGenerator::OUTPUT_SINGLE_LINE); } $docBlock = new DocBlockGenerator(); $generatedProp->setDocBlock($docBlock); if ($prop->getDoc()) { $docBlock->setLongDescription($prop->getDoc()); } $tag = new PropertyTag($prop->getName(), 'mixed'); $type = $prop->getType(); if ($type && $type instanceof PHPClassOf) { $tt = $type->getArg()->getType(); $tag->setTypes($this->getPhpType($tt) . "[]"); if ($p = $this->isOneType($tt)) { if ($t = $p->getType()) { $tag->setTypes($this->getPhpType($t) . "[]"); } } } elseif ($type) { if ($this->isNativeType($type)) { $tag->setTypes($this->getPhpType($type)); } elseif (($p = $this->isOneType($type)) && ($t = $p->getType())) { $tag->setTypes($this->getPhpType($t)); } else { $tag->setTypes($this->getPhpType($prop->getType())); } } $docBlock->setTag($tag); }