mirror of
https://github.com/rectorphp/rector.git
synced 2024-06-01 00:40:52 +00:00
extract NodeFactory
This commit is contained in:
parent
4bbe4cca7f
commit
3514870d12
22
src/NodeFactory/NodeFactory.php
Normal file
22
src/NodeFactory/NodeFactory.php
Normal file
|
@ -0,0 +1,22 @@
|
|||
<?php declare(strict_types=1);
|
||||
|
||||
namespace Rector\NodeFactory;
|
||||
|
||||
use PhpParser\Node\Expr\PropertyFetch;
|
||||
use PhpParser\Node\Expr\Variable;
|
||||
|
||||
final class NodeFactory
|
||||
{
|
||||
/**
|
||||
* Creates "$this->propertyName"
|
||||
*/
|
||||
public function createLocalPropertyFetch(string $propertyName): PropertyFetch
|
||||
{
|
||||
return new PropertyFetch(
|
||||
new Variable('this', [
|
||||
'name' => $propertyName,
|
||||
]),
|
||||
$propertyName
|
||||
);
|
||||
}
|
||||
}
|
|
@ -5,8 +5,6 @@ namespace Rector\Rector\Contrib\SymfonyExtra;
|
|||
use Nette\Utils\Strings;
|
||||
use PhpParser\Node;
|
||||
use PhpParser\Node\Expr\MethodCall;
|
||||
use PhpParser\Node\Expr\PropertyFetch;
|
||||
use PhpParser\Node\Expr\Variable;
|
||||
use PhpParser\Node\Name;
|
||||
use PhpParser\Node\Scalar\String_;
|
||||
use PhpParser\Node\Stmt\Class_;
|
||||
|
@ -14,6 +12,7 @@ use Rector\Builder\Class_\ClassPropertyCollector;
|
|||
use Rector\Builder\Kernel\ServiceFromKernelResolver;
|
||||
use Rector\Builder\Naming\NameResolver;
|
||||
use Rector\Deprecation\SetNames;
|
||||
use Rector\NodeFactory\NodeFactory;
|
||||
use Rector\Rector\AbstractRector;
|
||||
use Rector\Tests\Rector\Contrib\SymfonyExtra\GetterToPropertyRector\Source\LocalKernel;
|
||||
|
||||
|
@ -62,14 +61,21 @@ final class CommandToConstructorInjectionRector extends AbstractRector
|
|||
*/
|
||||
private $classNode;
|
||||
|
||||
/**
|
||||
* @var NodeFactory
|
||||
*/
|
||||
private $nodeFactory;
|
||||
|
||||
public function __construct(
|
||||
ServiceFromKernelResolver $serviceFromKernelResolver,
|
||||
ClassPropertyCollector $classPropertyCollector,
|
||||
NameResolver $nameResolver
|
||||
NameResolver $nameResolver,
|
||||
NodeFactory $nodeFactory
|
||||
) {
|
||||
$this->serviceFromKernelResolver = $serviceFromKernelResolver;
|
||||
$this->classPropertyCollector = $classPropertyCollector;
|
||||
$this->nameResolver = $nameResolver;
|
||||
$this->nodeFactory = $nodeFactory;
|
||||
}
|
||||
|
||||
public function getSetName(): string
|
||||
|
@ -147,21 +153,7 @@ final class CommandToConstructorInjectionRector extends AbstractRector
|
|||
|
||||
$this->classPropertyCollector->addPropertyForClass($this->getClassName(), $serviceType, $propertyName);
|
||||
|
||||
return $this->createPropertyFetch($propertyName);
|
||||
}
|
||||
|
||||
/**
|
||||
* @todo move to NodeFactory...
|
||||
* Creates "$this->propertyName".
|
||||
*/
|
||||
private function createPropertyFetch(string $propertyName): PropertyFetch
|
||||
{
|
||||
return new PropertyFetch(
|
||||
new Variable('this', [
|
||||
'name' => $propertyName,
|
||||
]),
|
||||
$propertyName
|
||||
);
|
||||
return $this->nodeFactory->createLocalPropertyFetch($propertyName);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -6,13 +6,13 @@ use PhpParser\Node;
|
|||
use PhpParser\Node\Expr\Assign;
|
||||
use PhpParser\Node\Expr\MethodCall;
|
||||
use PhpParser\Node\Expr\PropertyFetch;
|
||||
use PhpParser\Node\Expr\Variable;
|
||||
use PhpParser\Node\Scalar\String_;
|
||||
use PhpParser\Node\Stmt\Class_;
|
||||
use Rector\Builder\Class_\ClassPropertyCollector;
|
||||
use Rector\Builder\Kernel\ServiceFromKernelResolver;
|
||||
use Rector\Builder\Naming\NameResolver;
|
||||
use Rector\Deprecation\SetNames;
|
||||
use Rector\NodeFactory\NodeFactory;
|
||||
use Rector\Rector\AbstractRector;
|
||||
use Rector\Tests\Rector\Contrib\SymfonyExtra\GetterToPropertyRector\Source\LocalKernel;
|
||||
|
||||
|
@ -45,14 +45,21 @@ final class GetterToPropertyRector extends AbstractRector
|
|||
*/
|
||||
private $classNode;
|
||||
|
||||
/**
|
||||
* @var NodeFactory
|
||||
*/
|
||||
private $nodeFactory;
|
||||
|
||||
public function __construct(
|
||||
NameResolver $nameResolver,
|
||||
ServiceFromKernelResolver $serviceFromKernelResolver,
|
||||
ClassPropertyCollector $classPropertyCollector
|
||||
ClassPropertyCollector $classPropertyCollector,
|
||||
NodeFactory $nodeFactory
|
||||
) {
|
||||
$this->nameResolver = $nameResolver;
|
||||
$this->serviceFromKernelResolver = $serviceFromKernelResolver;
|
||||
$this->classPropertyCollector = $classPropertyCollector;
|
||||
$this->nodeFactory = $nodeFactory;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -162,21 +169,7 @@ final class GetterToPropertyRector extends AbstractRector
|
|||
|
||||
$this->classPropertyCollector->addPropertyForClass($this->getClassName(), $serviceType, $propertyName);
|
||||
|
||||
return $this->createPropertyFetch($propertyName);
|
||||
}
|
||||
|
||||
/**
|
||||
* @todo move to NodeFactory
|
||||
* Creates "$this->propertyName".
|
||||
*/
|
||||
private function createPropertyFetch(string $propertyName): PropertyFetch
|
||||
{
|
||||
return new PropertyFetch(
|
||||
new Variable('this', [
|
||||
'name' => $propertyName,
|
||||
]),
|
||||
$propertyName
|
||||
);
|
||||
return $this->nodeFactory->createLocalPropertyFetch($propertyName);
|
||||
}
|
||||
|
||||
private function getClassName(): string
|
||||
|
|
Loading…
Reference in New Issue
Block a user