Use accessor docblock return type to guess property type

This commit is contained in:
Bogdan Padalko
2016-09-06 12:24:42 +03:00
parent 2de6ab6038
commit 71cb03ca6a
+22 -1
View File
@@ -386,7 +386,9 @@ class ModelsCommand extends Command
//Magic get<name>Attribute
$name = Str::snake(substr($method, 3, -9));
if (!empty($name)) {
$this->setProperty($name, null, true, null);
$reflection = new \ReflectionMethod($model, $method);
$type = $this->getReturnTypeFromDocBlock($reflection);
$this->setProperty($name, $type, true, null);
}
} elseif (Str::startsWith($method, 'set') && Str::endsWith(
$method,
@@ -669,4 +671,23 @@ class ModelsCommand extends Command
{
return $this->laravel['config']->get('ide-helper.model_camel_case_properties', false);
}
/**
* Get method return type based on it DocBlock comment
*
* @param \ReflectionMethod $reflection
*
* @return null|string
*/
protected function getReturnTypeFromDocBlock(\ReflectionMethod $reflection)
{
$type = null;
$phpdoc = new DocBlock($reflection);
if ($phpdoc->hasTag('return')) {
$type = $phpdoc->getTagsByName('return')[0]->getContent();
}
return $type;
}
}