Merge pull request #389 from pinepain/return_type

Use accessor docblock return type to guess property type
This commit is contained in:
Barry vd. Heuvel
2016-09-08 08:54:27 +02:00
committed by GitHub
+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;
}
}