mirror of
https://github.com/barryvdh/laravel-ide-helper.git
synced 2026-08-18 10:07:12 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1b15d2930b | ||
|
|
3668e3821a | ||
|
|
7b4cef1ea4 | ||
|
|
cd2a71d43c | ||
|
|
c9132b28a6 | ||
|
|
8ab6e0536b | ||
|
|
87ebe458e9 | ||
|
|
9ef14f83be | ||
|
|
39c148ad42 | ||
|
|
2b3c9a2449 | ||
|
|
725711022b | ||
|
|
881f77156c | ||
|
|
0fad511954 | ||
|
|
754bb4d075 | ||
|
|
bcb881b20d | ||
|
|
d00600d769 | ||
|
|
858dd40844 | ||
|
|
4cd11a4d33 | ||
|
|
5439781e7c | ||
|
|
190bf07c05 |
+6
-6
@@ -11,15 +11,15 @@
|
|||||||
],
|
],
|
||||||
"require": {
|
"require": {
|
||||||
"php": ">=7",
|
"php": ">=7",
|
||||||
"illuminate/support": "^5.5,<5.8",
|
"illuminate/support": "^5.5|^6",
|
||||||
"illuminate/console": "^5.5,<5.8",
|
"illuminate/console": "^5.5|^6",
|
||||||
"illuminate/filesystem": "^5.5,<5.8",
|
"illuminate/filesystem": "^5.5|^6",
|
||||||
"barryvdh/reflection-docblock": "^2.0.6",
|
"barryvdh/reflection-docblock": "^2.0.6",
|
||||||
"composer/composer": "^1.6"
|
"composer/composer": "^1.6"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"illuminate/config": "^5.1,<5.8",
|
"illuminate/config": "^5.5|^6",
|
||||||
"illuminate/view": "^5.1,<5.8",
|
"illuminate/view": "^5.5|^6",
|
||||||
"phpro/grumphp": "^0.14",
|
"phpro/grumphp": "^0.14",
|
||||||
"phpunit/phpunit" : "4.*",
|
"phpunit/phpunit" : "4.*",
|
||||||
"scrutinizer/ocular": "~1.1",
|
"scrutinizer/ocular": "~1.1",
|
||||||
@@ -46,7 +46,7 @@
|
|||||||
},
|
},
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-master": "2.5-dev"
|
"dev-master": "2.6-dev"
|
||||||
},
|
},
|
||||||
"laravel": {
|
"laravel": {
|
||||||
"providers": [
|
"providers": [
|
||||||
|
|||||||
+14
-2
@@ -189,8 +189,20 @@ return array(
|
|||||||
| Cast the given "real type" to the given "type".
|
| Cast the given "real type" to the given "type".
|
||||||
|
|
|
|
||||||
*/
|
*/
|
||||||
'type_overrides' => array(
|
'type_overrides' => array(
|
||||||
'integer' => 'int',
|
'integer' => 'int',
|
||||||
'boolean' => 'bool',
|
'boolean' => 'bool',
|
||||||
),
|
),
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Include DocBlocks from classes
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| Include DocBlocks from classes to allow additional code inspection for
|
||||||
|
| magic methods and properties.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
'include_class_docblocks' => false,
|
||||||
|
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ Note: You do need CodeComplice for Sublime Text: https://github.com/spectacles/C
|
|||||||
Require this package with composer using the following command:
|
Require this package with composer using the following command:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
composer require barryvdh/laravel-ide-helper
|
composer require --dev barryvdh/laravel-ide-helper
|
||||||
```
|
```
|
||||||
|
|
||||||
After updating composer, add the service provider to the `providers` array in `config/app.php`
|
After updating composer, add the service provider to the `providers` array in `config/app.php`
|
||||||
@@ -39,12 +39,6 @@ Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class,
|
|||||||
```
|
```
|
||||||
**Laravel 5.5** uses Package Auto-Discovery, so doesn't require you to manually add the ServiceProvider.
|
**Laravel 5.5** uses Package Auto-Discovery, so doesn't require you to manually add the ServiceProvider.
|
||||||
|
|
||||||
To install this package on only development systems, add the `--dev` flag to your composer command:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
composer require --dev barryvdh/laravel-ide-helper
|
|
||||||
```
|
|
||||||
|
|
||||||
In Laravel, instead of adding the service provider in the `config/app.php` file, you can add the following code to your `app/Providers/AppServiceProvider.php` file, within the `register()` method:
|
In Laravel, instead of adding the service provider in the `config/app.php` file, you can add the following code to your `app/Providers/AppServiceProvider.php` file, within the `register()` method:
|
||||||
|
|
||||||
```php
|
```php
|
||||||
@@ -97,11 +91,11 @@ The `Illuminate/Support/helpers.php` is already set up, but you can add/remove y
|
|||||||
|
|
||||||
### Automatic phpDocs for models
|
### Automatic phpDocs for models
|
||||||
|
|
||||||
> You need to require `doctrine/dbal: ~2.3` in your own composer.json to get database columns.
|
> You need to add `doctrine/dbal: ~2.3` to require-dev in your own composer.json to get database columns.
|
||||||
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
composer require doctrine/dbal
|
composer require --dev doctrine/dbal
|
||||||
```
|
```
|
||||||
|
|
||||||
If you don't want to write your properties yourself, you can use the command `php artisan ide-helper:models` to generate
|
If you don't want to write your properties yourself, you can use the command `php artisan ide-helper:models` to generate
|
||||||
|
|||||||
@@ -36,7 +36,10 @@ namespace <?= $namespace == '__root' ? '' : trim($namespace, '\\') ?> {
|
|||||||
//Method inherited from <?= $method->getDeclaringClass() ?>
|
//Method inherited from <?= $method->getDeclaringClass() ?>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
|
|
||||||
<?= $method->shouldReturn() ? 'return ': '' ?><?= $method->getRoot() ?>::<?= $method->getRealName() ?>(<?= $method->getParams() ?>);
|
<?php if($method->isInstanceCall()):?>
|
||||||
|
/** @var <?=$method->getRoot()?> $instance */
|
||||||
|
<?php endif?>
|
||||||
|
<?= $method->shouldReturn() ? 'return ': '' ?><?= $method->getRootMethodCall() ?>;
|
||||||
}
|
}
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
}
|
}
|
||||||
@@ -57,8 +60,11 @@ namespace <?= $namespace == '__root' ? '' : trim($namespace, '\\') ?> {
|
|||||||
|
|
||||||
//Method inherited from <?= $method->getDeclaringClass() ?>
|
//Method inherited from <?= $method->getDeclaringClass() ?>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
|
|
||||||
<?= $method->shouldReturn() ? 'return ': '' ?><?= $method->getRoot() ?>::<?= $method->getRealName() ?>(<?= $method->getParams() ?>);
|
<?php if($method->isInstanceCall()):?>
|
||||||
|
/** @var <?=$method->getRoot()?> $instance */
|
||||||
|
<?php endif?>
|
||||||
|
<?= $method->shouldReturn() ? 'return ': '' ?><?= $method->getRootMethodCall() ?>;
|
||||||
}
|
}
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
<?php endif; ?>}
|
<?php endif; ?>}
|
||||||
|
|||||||
+29
-8
@@ -10,11 +10,13 @@
|
|||||||
|
|
||||||
namespace Barryvdh\LaravelIdeHelper;
|
namespace Barryvdh\LaravelIdeHelper;
|
||||||
|
|
||||||
|
use Closure;
|
||||||
|
use ReflectionClass;
|
||||||
use Barryvdh\Reflection\DocBlock;
|
use Barryvdh\Reflection\DocBlock;
|
||||||
use Barryvdh\Reflection\DocBlock\Context;
|
use Barryvdh\Reflection\DocBlock\Context;
|
||||||
use Barryvdh\Reflection\DocBlock\Serializer as DocBlockSerializer;
|
|
||||||
use Barryvdh\Reflection\DocBlock\Tag\MethodTag;
|
use Barryvdh\Reflection\DocBlock\Tag\MethodTag;
|
||||||
use ReflectionClass;
|
use Illuminate\Config\Repository as ConfigRepository;
|
||||||
|
use Barryvdh\Reflection\DocBlock\Serializer as DocBlockSerializer;
|
||||||
|
|
||||||
class Alias
|
class Alias
|
||||||
{
|
{
|
||||||
@@ -35,17 +37,22 @@ class Alias
|
|||||||
protected $interfaces = array();
|
protected $interfaces = array();
|
||||||
protected $phpdoc = null;
|
protected $phpdoc = null;
|
||||||
|
|
||||||
|
/** @var ConfigRepository */
|
||||||
|
protected $config;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $alias
|
* @param ConfigRepository $config
|
||||||
* @param string $facade
|
* @param string $alias
|
||||||
* @param array $magicMethods
|
* @param string $facade
|
||||||
* @param array $interfaces
|
* @param array $magicMethods
|
||||||
|
* @param array $interfaces
|
||||||
*/
|
*/
|
||||||
public function __construct($alias, $facade, $magicMethods = array(), $interfaces = array())
|
public function __construct($config, $alias, $facade, $magicMethods = array(), $interfaces = array())
|
||||||
{
|
{
|
||||||
$this->alias = $alias;
|
$this->alias = $alias;
|
||||||
$this->magicMethods = $magicMethods;
|
$this->magicMethods = $magicMethods;
|
||||||
$this->interfaces = $interfaces;
|
$this->interfaces = $interfaces;
|
||||||
|
$this->config = $config;
|
||||||
|
|
||||||
// Make the class absolute
|
// Make the class absolute
|
||||||
$facade = '\\' . ltrim($facade, '\\');
|
$facade = '\\' . ltrim($facade, '\\');
|
||||||
@@ -389,6 +396,10 @@ class Alias
|
|||||||
return new \ReflectionMethod($macro_func[0], $macro_func[1]);
|
return new \ReflectionMethod($macro_func[0], $macro_func[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (is_object($macro_func) && is_callable($macro_func) && !$macro_func instanceof Closure) {
|
||||||
|
return new \ReflectionMethod($macro_func, '__invoke');
|
||||||
|
}
|
||||||
|
|
||||||
return new \ReflectionFunction($macro_func);
|
return new \ReflectionFunction($macro_func);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -403,10 +414,20 @@ class Alias
|
|||||||
$serializer = new DocBlockSerializer(1, $prefix);
|
$serializer = new DocBlockSerializer(1, $prefix);
|
||||||
|
|
||||||
if ($this->phpdoc) {
|
if ($this->phpdoc) {
|
||||||
|
if ($this->config->get('ide-helper.include_class_docblocks')) {
|
||||||
|
// if a class doesn't expose any DocBlock tags
|
||||||
|
// we can perform reflection on the class and
|
||||||
|
// add in the original class DocBlock
|
||||||
|
if (count($this->phpdoc->getTags()) === 0) {
|
||||||
|
$class = new ReflectionClass($this->root);
|
||||||
|
$this->phpdoc = new DocBlock($class->getDocComment());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$this->removeDuplicateMethodsFromPhpDoc();
|
$this->removeDuplicateMethodsFromPhpDoc();
|
||||||
return $serializer->getDocComment($this->phpdoc);
|
return $serializer->getDocComment($this->phpdoc);
|
||||||
}
|
}
|
||||||
|
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ class MetaCommand extends Command
|
|||||||
|
|
||||||
protected $methods = [
|
protected $methods = [
|
||||||
'new \Illuminate\Contracts\Container\Container',
|
'new \Illuminate\Contracts\Container\Container',
|
||||||
|
'\Illuminate\Container\Container::makeWith(0)',
|
||||||
'\Illuminate\Contracts\Container\Container::make(0)',
|
'\Illuminate\Contracts\Container\Container::make(0)',
|
||||||
'\Illuminate\Contracts\Container\Container::makeWith(0)',
|
'\Illuminate\Contracts\Container\Container::makeWith(0)',
|
||||||
'\App::make(0)',
|
'\App::make(0)',
|
||||||
@@ -90,7 +91,7 @@ class MetaCommand extends Command
|
|||||||
if (is_object($concrete)) {
|
if (is_object($concrete)) {
|
||||||
$bindings[$abstract] = get_class($concrete);
|
$bindings[$abstract] = get_class($concrete);
|
||||||
}
|
}
|
||||||
} catch (\Exception $e) {
|
} catch (\Throwable $e) {
|
||||||
if ($this->output->getVerbosity() >= OutputInterface::VERBOSITY_VERBOSE) {
|
if ($this->output->getVerbosity() >= OutputInterface::VERBOSITY_VERBOSE) {
|
||||||
$this->comment("Cannot make '$abstract': ".$e->getMessage());
|
$this->comment("Cannot make '$abstract': ".$e->getMessage());
|
||||||
}
|
}
|
||||||
@@ -135,7 +136,7 @@ class MetaCommand extends Command
|
|||||||
protected function registerClassAutoloadExceptions()
|
protected function registerClassAutoloadExceptions()
|
||||||
{
|
{
|
||||||
spl_autoload_register(function ($class) {
|
spl_autoload_register(function ($class) {
|
||||||
throw new \Exception("Class '$class' not found.");
|
throw new \ReflectionException("Class '$class' not found.");
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ class ModelsCommand extends Command
|
|||||||
//If filename is default and Write is not specified, ask what to do
|
//If filename is default and Write is not specified, ask what to do
|
||||||
if (!$this->write && $filename === $this->filename && !$this->option('nowrite')) {
|
if (!$this->write && $filename === $this->filename && !$this->option('nowrite')) {
|
||||||
if ($this->confirm(
|
if ($this->confirm(
|
||||||
"Do you want to overwrite the existing model files? Choose no to write to $filename instead?"
|
"Do you want to overwrite the existing model files? Choose no to write to $filename instead"
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
$this->write = true;
|
$this->write = true;
|
||||||
@@ -217,7 +217,7 @@ class ModelsCommand extends Command
|
|||||||
$output .= $this->createPhpDocs($name);
|
$output .= $this->createPhpDocs($name);
|
||||||
$ignore[] = $name;
|
$ignore[] = $name;
|
||||||
$this->nullableColumns = [];
|
$this->nullableColumns = [];
|
||||||
} catch (\Exception $e) {
|
} catch (\Throwable $e) {
|
||||||
$this->error("Exception: " . $e->getMessage() . "\nCould not analyze class $name.");
|
$this->error("Exception: " . $e->getMessage() . "\nCould not analyze class $name.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -290,7 +290,7 @@ class ModelsCommand extends Command
|
|||||||
$realType = '\Illuminate\Support\Collection';
|
$realType = '\Illuminate\Support\Collection';
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
$realType = 'mixed';
|
$realType = class_exists($type) ? ('\\' . $type) : 'mixed';
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -446,12 +446,17 @@ class ModelsCommand extends Command
|
|||||||
}
|
}
|
||||||
} elseif (in_array($method, ['query', 'newQuery', 'newModelQuery'])) {
|
} elseif (in_array($method, ['query', 'newQuery', 'newModelQuery'])) {
|
||||||
$reflection = new \ReflectionClass($model);
|
$reflection = new \ReflectionClass($model);
|
||||||
$this->setMethod($method, '\Illuminate\Database\Eloquent\Builder|\\' . $reflection->getName());
|
|
||||||
|
$builder = get_class($model->newModelQuery());
|
||||||
|
|
||||||
|
$this->setMethod($method, "\\{$builder}|\\" . $reflection->getName());
|
||||||
} elseif (!method_exists('Illuminate\Database\Eloquent\Model', $method)
|
} elseif (!method_exists('Illuminate\Database\Eloquent\Model', $method)
|
||||||
&& !Str::startsWith($method, 'get')
|
&& !Str::startsWith($method, 'get')
|
||||||
) {
|
) {
|
||||||
//Use reflection to inspect the code, based on Illuminate/Support/SerializableClosure.php
|
//Use reflection to inspect the code, based on Illuminate/Support/SerializableClosure.php
|
||||||
$reflection = new \ReflectionMethod($model, $method);
|
$reflection = new \ReflectionMethod($model, $method);
|
||||||
|
// php 7.x type or fallback to docblock
|
||||||
|
$type = (string)($reflection->getReturnType() ?: $this->getReturnTypeFromDocBlock($reflection));
|
||||||
|
|
||||||
$file = new \SplFileObject($reflection->getFileName());
|
$file = new \SplFileObject($reflection->getFileName());
|
||||||
$file->seek($reflection->getStartLine() - 1);
|
$file->seek($reflection->getStartLine() - 1);
|
||||||
@@ -466,19 +471,19 @@ class ModelsCommand extends Command
|
|||||||
$code = substr($code, $begin, strrpos($code, '}') - $begin + 1);
|
$code = substr($code, $begin, strrpos($code, '}') - $begin + 1);
|
||||||
|
|
||||||
foreach (array(
|
foreach (array(
|
||||||
'hasMany',
|
'hasMany' => '\Illuminate\Database\Eloquent\Relations\HasMany',
|
||||||
'hasManyThrough',
|
'hasManyThrough' => '\Illuminate\Database\Eloquent\Relations\HasManyThrough',
|
||||||
'belongsToMany',
|
'belongsToMany' => '\Illuminate\Database\Eloquent\Relations\BelongsToMany',
|
||||||
'hasOne',
|
'hasOne' => '\Illuminate\Database\Eloquent\Relations\HasOne',
|
||||||
'belongsTo',
|
'belongsTo' => '\Illuminate\Database\Eloquent\Relations\BelongsTo',
|
||||||
'morphOne',
|
'morphOne' => '\Illuminate\Database\Eloquent\Relations\MorphOne',
|
||||||
'morphTo',
|
'morphTo' => '\Illuminate\Database\Eloquent\Relations\MorphTo',
|
||||||
'morphMany',
|
'morphMany' => '\Illuminate\Database\Eloquent\Relations\MorphMany',
|
||||||
'morphToMany',
|
'morphToMany' => '\Illuminate\Database\Eloquent\Relations\MorphToMany',
|
||||||
'morphedByMany'
|
'morphedByMany' => '\Illuminate\Database\Eloquent\Relations\MorphToMany'
|
||||||
) as $relation) {
|
) as $relation => $impl) {
|
||||||
$search = '$this->' . $relation . '(';
|
$search = '$this->' . $relation . '(';
|
||||||
if ($pos = stripos($code, $search)) {
|
if (stripos($code, $search) || stripos($impl, (string)$type) !== false) {
|
||||||
//Resolve the relation's model to a Relation object.
|
//Resolve the relation's model to a Relation object.
|
||||||
$methodReflection = new \ReflectionMethod($model, $method);
|
$methodReflection = new \ReflectionMethod($model, $method);
|
||||||
if ($methodReflection->getNumberOfParameters()) {
|
if ($methodReflection->getNumberOfParameters()) {
|
||||||
@@ -498,7 +503,7 @@ class ModelsCommand extends Command
|
|||||||
'morphToMany',
|
'morphToMany',
|
||||||
'morphedByMany',
|
'morphedByMany',
|
||||||
];
|
];
|
||||||
if (in_array($relation, $relations)) {
|
if (strpos(get_class($relationObj), 'Many') !== false) {
|
||||||
//Collection or array of models (because Collection is Arrayable)
|
//Collection or array of models (because Collection is Arrayable)
|
||||||
$this->setProperty(
|
$this->setProperty(
|
||||||
$method,
|
$method,
|
||||||
@@ -506,6 +511,12 @@ class ModelsCommand extends Command
|
|||||||
true,
|
true,
|
||||||
null
|
null
|
||||||
);
|
);
|
||||||
|
$this->setProperty(
|
||||||
|
Str::snake($method) . '_count',
|
||||||
|
'int|null',
|
||||||
|
true,
|
||||||
|
false
|
||||||
|
);
|
||||||
} elseif ($relation === "morphTo") {
|
} elseif ($relation === "morphTo") {
|
||||||
// Model isn't specified because relation is polymorphic
|
// Model isn't specified because relation is polymorphic
|
||||||
$this->setProperty(
|
$this->setProperty(
|
||||||
|
|||||||
+1
-1
@@ -203,7 +203,7 @@ class Generator
|
|||||||
}
|
}
|
||||||
|
|
||||||
$magicMethods = array_key_exists($name, $this->magic) ? $this->magic[$name] : array();
|
$magicMethods = array_key_exists($name, $this->magic) ? $this->magic[$name] : array();
|
||||||
$alias = new Alias($name, $facade, $magicMethods, $this->interfaces);
|
$alias = new Alias($this->config, $name, $facade, $magicMethods, $this->interfaces);
|
||||||
if ($alias->isValid()) {
|
if ($alias->isValid()) {
|
||||||
//Add extra methods, from other classes (magic static calls)
|
//Add extra methods, from other classes (magic static calls)
|
||||||
if (array_key_exists($name, $this->extra)) {
|
if (array_key_exists($name, $this->extra)) {
|
||||||
|
|||||||
+28
-3
@@ -34,6 +34,7 @@ class Method
|
|||||||
protected $interfaces = array();
|
protected $interfaces = array();
|
||||||
protected $real_name;
|
protected $real_name;
|
||||||
protected $return = null;
|
protected $return = null;
|
||||||
|
protected $root;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param \ReflectionMethod|\ReflectionFunctionAbstract $method
|
* @param \ReflectionMethod|\ReflectionFunctionAbstract $method
|
||||||
@@ -50,6 +51,9 @@ class Method
|
|||||||
$this->real_name = $method->isClosure() ? $this->name : $method->name;
|
$this->real_name = $method->isClosure() ? $this->name : $method->name;
|
||||||
$this->initClassDefinedProperties($method, $class);
|
$this->initClassDefinedProperties($method, $class);
|
||||||
|
|
||||||
|
//Reference the 'real' function in the declaring class
|
||||||
|
$this->root = '\\' . ltrim($class->getName(), '\\');
|
||||||
|
|
||||||
//Create a DocBlock and serializer instance
|
//Create a DocBlock and serializer instance
|
||||||
$this->initPhpDoc($method);
|
$this->initPhpDoc($method);
|
||||||
|
|
||||||
@@ -66,9 +70,6 @@ class Method
|
|||||||
|
|
||||||
//Make the method static
|
//Make the method static
|
||||||
$this->phpdoc->appendTag(Tag::createInstance('@static', $this->phpdoc));
|
$this->phpdoc->appendTag(Tag::createInstance('@static', $this->phpdoc));
|
||||||
|
|
||||||
//Reference the 'real' function in the declaring class
|
|
||||||
$this->root = '\\' . ltrim($class->getName(), '\\');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -110,6 +111,26 @@ class Method
|
|||||||
return $this->root;
|
return $this->root;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function isInstanceCall()
|
||||||
|
{
|
||||||
|
return ! ($this->method->isClosure() || $this->method->isStatic());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getRootMethodCall()
|
||||||
|
{
|
||||||
|
if ($this->isInstanceCall()) {
|
||||||
|
return "\$instance->{$this->getRealName()}({$this->getParams()})";
|
||||||
|
} else {
|
||||||
|
return "{$this->getRoot()}::{$this->getRealName()}({$this->getParams()})";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the docblock for this method
|
* Get the docblock for this method
|
||||||
*
|
*
|
||||||
@@ -243,6 +264,10 @@ class Method
|
|||||||
// Set the changed content
|
// Set the changed content
|
||||||
$tag->setContent($returnValue . ' ' . $tag->getDescription());
|
$tag->setContent($returnValue . ' ' . $tag->getDescription());
|
||||||
$this->return = $returnValue;
|
$this->return = $returnValue;
|
||||||
|
|
||||||
|
if ($tag->getType() === '$this') {
|
||||||
|
$tag->setType($this->root);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
$this->return = null;
|
$this->return = null;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user