Skip to content

Commit f2f732c

Browse files
committed
Allow configurable allow list of models to convert
1 parent 09ebd2d commit f2f732c

File tree

1 file changed

+16
-1
lines changed

1 file changed

+16
-1
lines changed

src/Rector/Class_/AddHasFactoryToModelsRector.php

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
use PhpParser\Node\Stmt\TraitUse;
1111
use PHPStan\Reflection\ClassReflection;
1212
use PHPStan\Type\ObjectType;
13+
use Rector\Contract\Rector\ConfigurableRectorInterface;
1314
use Rector\Rector\AbstractRector;
1415
use Rector\Reflection\ReflectionResolver;
1516
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
@@ -20,10 +21,15 @@
2021
*
2122
* @see \RectorLaravel\Tests\Rector\Class_\RemoveModelPropertyFromFactoriesRector\RemoveModelPropertyFromFactoriesRectorTest
2223
*/
23-
final class AddHasFactoryToModelsRector extends AbstractRector
24+
final class AddHasFactoryToModelsRector extends AbstractRector implements ConfigurableRectorInterface
2425
{
2526
private const string TRAIT_NAME = 'Illuminate\Database\Eloquent\Factories\HasFactory';
2627

28+
/**
29+
* @var mixed[]
30+
*/
31+
private array $allowList = [];
32+
2733
public function __construct(
2834
private readonly ReflectionResolver $reflectionResolver,
2935
) {}
@@ -53,6 +59,11 @@ class User extends Model
5359
]);
5460
}
5561

62+
public function configure(array $configuration): void
63+
{
64+
$this->allowList = $configuration;
65+
}
66+
5667
/**
5768
* @return array<class-string<Node>>
5869
*/
@@ -83,6 +94,10 @@ private function shouldSkipClass(Class_ $class): bool
8394
return null;
8495
}
8596

97+
if ($this->allowList !== [] && ! $this->isNames($class, $this->allowList)) {
98+
return false;
99+
}
100+
86101
$classReflection = $this->reflectionResolver->resolveClassReflection($class);
87102
if (! $classReflection instanceof ClassReflection) {
88103
return false;

0 commit comments

Comments
 (0)