/**
  * 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;
 }