mirror of
https://github.com/barryvdh/laravel-ide-helper.git
synced 2026-08-17 17:47:13 +00:00
Configurable macro return type defaults (#1711)
This commit is contained in:
@@ -274,6 +274,20 @@ return [
|
|||||||
*/
|
*/
|
||||||
'use_generics_annotations' => true,
|
'use_generics_annotations' => true,
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Default return types for macros
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| Define default return types for macros without explicit return types.
|
||||||
|
| e.g. `\Illuminate\Database\Query\Builder::class => 'static'`,
|
||||||
|
| `\Illuminate\Support\Str::class => 'string'`
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
'macro_default_return_types' => [
|
||||||
|
\Illuminate\Http\Client\Factory::class => \Illuminate\Http\Client\PendingRequest::class,
|
||||||
|
],
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
| Additional relation types
|
| Additional relation types
|
||||||
|
|||||||
+7
-3
@@ -57,9 +57,13 @@ class Generator
|
|||||||
// Find the drivers to add to the extra/interfaces
|
// Find the drivers to add to the extra/interfaces
|
||||||
$this->detectDrivers();
|
$this->detectDrivers();
|
||||||
|
|
||||||
$this->extra = array_merge($this->extra, $this->config->get('ide-helper.extra'), []);
|
$this->extra = array_merge($this->extra, $this->config->get('ide-helper.extra', []));
|
||||||
$this->magic = array_merge($this->magic, $this->config->get('ide-helper.magic'), []);
|
$this->magic = array_merge($this->magic, $this->config->get('ide-helper.magic', []));
|
||||||
$this->interfaces = array_merge($this->interfaces, $this->config->get('ide-helper.interfaces'), []);
|
$this->interfaces = array_merge($this->interfaces, $this->config->get('ide-helper.interfaces', []));
|
||||||
|
Macro::setDefaultReturnTypes($this->config->get('ide-helper.macro_default_return_types', [
|
||||||
|
\Illuminate\Http\Client\Factory::class => \Illuminate\Http\Client\PendingRequest::class,
|
||||||
|
]));
|
||||||
|
|
||||||
// Make all interface classes absolute
|
// Make all interface classes absolute
|
||||||
foreach ($this->interfaces as &$interface) {
|
foreach ($this->interfaces as &$interface) {
|
||||||
$interface = '\\' . ltrim($interface, '\\');
|
$interface = '\\' . ltrim($interface, '\\');
|
||||||
|
|||||||
+7
-6
@@ -5,14 +5,11 @@ namespace Barryvdh\LaravelIdeHelper;
|
|||||||
use Barryvdh\Reflection\DocBlock;
|
use Barryvdh\Reflection\DocBlock;
|
||||||
use Barryvdh\Reflection\DocBlock\Tag;
|
use Barryvdh\Reflection\DocBlock\Tag;
|
||||||
use Illuminate\Database\Eloquent\Builder as EloquentBuilder;
|
use Illuminate\Database\Eloquent\Builder as EloquentBuilder;
|
||||||
use Illuminate\Http\Client\PendingRequest;
|
|
||||||
use Illuminate\Support\Collection;
|
use Illuminate\Support\Collection;
|
||||||
|
|
||||||
class Macro extends Method
|
class Macro extends Method
|
||||||
{
|
{
|
||||||
protected $macroDefaults = [
|
protected static $macroDefaults = [];
|
||||||
\Illuminate\Http\Client\Factory::class => PendingRequest::class,
|
|
||||||
];
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Macro constructor.
|
* Macro constructor.
|
||||||
@@ -37,6 +34,10 @@ class Macro extends Method
|
|||||||
parent::__construct($method, $alias, $class, $methodName, $interfaces, $classAliases, $returnTypeNormalizers);
|
parent::__construct($method, $alias, $class, $methodName, $interfaces, $classAliases, $returnTypeNormalizers);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function setDefaultReturnTypes(array $map = [])
|
||||||
|
{
|
||||||
|
static::$macroDefaults = array_merge(static::$macroDefaults, $map);
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* @param \ReflectionFunctionAbstract $method
|
* @param \ReflectionFunctionAbstract $method
|
||||||
*/
|
*/
|
||||||
@@ -84,8 +85,8 @@ class Macro extends Method
|
|||||||
}
|
}
|
||||||
|
|
||||||
$class = ltrim($this->declaringClassName, '\\');
|
$class = ltrim($this->declaringClassName, '\\');
|
||||||
if (!$this->phpdoc->hasTag('return') && isset($this->macroDefaults[$class])) {
|
if (!$this->phpdoc->hasTag('return') && isset(static::$macroDefaults[$class])) {
|
||||||
$type = $this->macroDefaults[$class];
|
$type = static::$macroDefaults[$class];
|
||||||
$this->phpdoc->appendTag(Tag::createInstance("@return {$type}"));
|
$this->phpdoc->appendTag(Tag::createInstance("@return {$type}"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ class Test extends AbstractGeneratorCommand
|
|||||||
});
|
});
|
||||||
DB::macro('db_custom_macro', function () {
|
DB::macro('db_custom_macro', function () {
|
||||||
});
|
});
|
||||||
|
$this->app['config']->set('ide-helper.macro_default_return_types', [Arr::class => 'Custom_Fake_Class']);
|
||||||
|
|
||||||
$command = $this->app->make(GeneratorCommand::class);
|
$command = $this->app->make(GeneratorCommand::class);
|
||||||
|
|
||||||
@@ -26,6 +27,7 @@ class Test extends AbstractGeneratorCommand
|
|||||||
|
|
||||||
$this->assertStringContainsString('A new helper file was written to _ide_helper.php', $tester->getDisplay());
|
$this->assertStringContainsString('A new helper file was written to _ide_helper.php', $tester->getDisplay());
|
||||||
$this->assertStringContainsString('public static function configure($basePath = null)', $this->mockFilesystemOutput);
|
$this->assertStringContainsString('public static function configure($basePath = null)', $this->mockFilesystemOutput);
|
||||||
|
$this->assertStringContainsString('* @return \Custom_Fake_Class', $this->mockFilesystemOutput);
|
||||||
$this->assertStringContainsString('public static function arr_custom_macro()', $this->mockFilesystemOutput);
|
$this->assertStringContainsString('public static function arr_custom_macro()', $this->mockFilesystemOutput);
|
||||||
$this->assertStringContainsString('public static function db_custom_macro()', $this->mockFilesystemOutput);
|
$this->assertStringContainsString('public static function db_custom_macro()', $this->mockFilesystemOutput);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user