/** * Return class properties from array with indent specified * * @param array $props Properties array * @param array $indent Indentation in tabs * * @return string */ public function getClassProperties($props, $indent = "\t") { $code = $indent . "\n"; foreach ($props as $prop) { if (!empty($prop['docs'])) { $code .= $indent . $this->getDocBlock($prop['docs'], $indent); } $code .= $indent . 'public $' . $prop['name'] . ";\n"; // Add getter and setters if (!isset($prop['docs']['var'])) { $typeHint = null; } else { $typeHint = self::validateTypeHint($prop['docs']['var']); } $newMember = $this->getVariable($typeHint, $prop['name'], true); $setterCommentObj = new PhpDocComment(); $setterCommentObj->addParam(PhpDocElementFactory::getParam($typeHint, $prop['name'], '')); $setterCommentObj->setReturn(PhpDocElementFactory::getReturn('$this', '')); $setterCode = $this->getSetterBody($prop['name'], $typeHint, $newMember); $setter = new PhpFunction('public', 'set' . ucfirst($prop['name']), $this->buildParametersString([$prop['name'] => $typeHint], true, $newMember->getNullable() && !empty($typeHint)), $setterCode, $setterCommentObj); $getterComment = new PhpDocComment(); $getterComment->setReturn(PhpDocElementFactory::getReturn($typeHint, '')); $getterCode = $this->getGetterBody($prop['name'], $typeHint); $getter = new PhpFunction('public', 'get' . $prop['name'], '', $getterCode, $getterComment); $code = $code . $getter->getSource() . $setter->getSource() . PHP_EOL; } return $code; }