diff --git a/src/Console/ModelsCommand.php b/src/Console/ModelsCommand.php index 6b655e7..11b8c73 100644 --- a/src/Console/ModelsCommand.php +++ b/src/Console/ModelsCommand.php @@ -63,6 +63,7 @@ class ModelsCommand extends Command parent::__construct(); $this->files = $files; } + /** * Execute the console command. * @@ -193,6 +194,7 @@ class ModelsCommand extends Command $this->getPropertiesFromMethods($model); $output .= $this->createPhpDocs($name); + $ignore[] = $name; } catch (\Exception $e) { $this->error("Exception: " . $e->getMessage() . "\nCould not analyze class $name."); } @@ -347,6 +349,7 @@ class ModelsCommand extends Command $code .= $file->current(); $file->next(); } + $code = trim(preg_replace('/\s\s+/', '', $code)); $begin = strpos($code, 'function('); $code = substr($code, $begin, strrpos($code, '}') - $begin + 1); @@ -362,24 +365,29 @@ class ModelsCommand extends Command $search = '$this->' . $relation . '('; if ($pos = stripos($code, $search)) { $code = substr($code, $pos + strlen($search)); - $arguments = explode(',', substr($code, 0, strpos($code, ')'))); - //Remove quotes, ensure 1 \ in front of the model - $returnModel = $this->getClassName($arguments[0], $model); - if ($relation === "belongsToMany" or $relation === 'hasMany' or $relation === 'morphMany' or $relation === 'morphToMany') { - //Collection or array of models (because Collection is Arrayable) - $this->setProperty( - $method, - '\Illuminate\Database\Eloquent\Collection|' . $returnModel . '[]', - true, - null - ); - } else { - //Single model is returned - $this->setProperty($method, $returnModel, true, null); + $end = strpos($code, ')->') ?:strpos($code, ');'); + if (false !== $end) { + $arguments = substr($code, 0, $end); + $arguments = array_map(function($item) { + return trim($item, ' \'\"'); + }, explode(',', $arguments)); + //Remove quotes, ensure 1 \ in front of the model + $returnModel = $this->getClassName($arguments[0], $model); + if ($relation === "belongsToMany" or $relation === 'hasMany' or $relation === 'morphMany' or $relation === 'morphToMany') { + //Collection or array of models (because Collection is Arrayable) + $this->setProperty( + $method, + '\Illuminate\Database\Eloquent\Collection|' . $returnModel . '[]', + true, + null + ); + } else { + //Single model is returned + $this->setProperty($method, $returnModel, true, null); + } } } } - } } } @@ -549,7 +557,7 @@ class ModelsCommand extends Command { // If the class name was resolved via get_class($this) or static::class if (strpos($className, 'get_class($this)') !== false || strpos($className, 'static::class') !== false) { - return get_class($model); + return "\\" . get_class($model); } // If the class name was resolved via ::class (PHP 5.5+)