Configurable macro return type defaults (#1711)

This commit is contained in:
erikn69
2025-05-15 09:56:31 +02:00
committed by GitHub
parent cdefaeed42
commit e0b2f86326
4 changed files with 30 additions and 9 deletions
+7 -3
View File
@@ -57,9 +57,13 @@ class Generator
// Find the drivers to add to the extra/interfaces
$this->detectDrivers();
$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->interfaces = array_merge($this->interfaces, $this->config->get('ide-helper.interfaces'), []);
$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->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
foreach ($this->interfaces as &$interface) {
$interface = '\\' . ltrim($interface, '\\');
+7 -6
View File
@@ -5,14 +5,11 @@ namespace Barryvdh\LaravelIdeHelper;
use Barryvdh\Reflection\DocBlock;
use Barryvdh\Reflection\DocBlock\Tag;
use Illuminate\Database\Eloquent\Builder as EloquentBuilder;
use Illuminate\Http\Client\PendingRequest;
use Illuminate\Support\Collection;
class Macro extends Method
{
protected $macroDefaults = [
\Illuminate\Http\Client\Factory::class => PendingRequest::class,
];
protected static $macroDefaults = [];
/**
* Macro constructor.
@@ -37,6 +34,10 @@ class Macro extends Method
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
*/
@@ -84,8 +85,8 @@ class Macro extends Method
}
$class = ltrim($this->declaringClassName, '\\');
if (!$this->phpdoc->hasTag('return') && isset($this->macroDefaults[$class])) {
$type = $this->macroDefaults[$class];
if (!$this->phpdoc->hasTag('return') && isset(static::$macroDefaults[$class])) {
$type = static::$macroDefaults[$class];
$this->phpdoc->appendTag(Tag::createInstance("@return {$type}"));
}
}