19 declare(strict_types=1);
40 public const DIC =
'DIC';
41 public const THIS =
'this';
46 protected TypeProvidingExprFromClassResolver $typeProvidingExprFromClassResolver,
48 protected PropertyToAddCollector $propertyToAddCollector,
49 protected ClassInsertManipulator $classInsertManipulator,
50 protected NodesToAddCollector $nodesToAddCollector,
51 protected \Rector\Core\PhpParser\Node\NodeFactory $nodeFactory,
52 protected ConstructorClassMethodFactory $constructorClassMethodFactory,
53 protected \Rector\Core\NodeDecorator\PropertyTypeDecorator $propertyTypeDecorator,
54 protected \Rector\ChangesReporting\Collector\RectorChangeCollector $rectorChangeCollector
65 ClassMethod $classMethod
66 ): \PhpParser\Node\Expr\Variable {
68 $dic_variable = $this->dicDependencyManipulator->ensureGlobalDICinMethod($classMethod, $class);
72 $expression =
new Expression(
81 $this->dicDependencyManipulator->addStmtToMethodIfNotThereAfterGlobalDIC(
93 ClassMethod $classMethod
101 $classMethodName = $classMethod->name->name ?? null;
102 if ($classMethod->isStatic()) {
105 if ($classMethodName === \Rector\Core\ValueObject\MethodName::CONSTRUCT) {
110 $mainClass = $DICMember->getMainClass();
111 $dicPropertyFetch = $this->typeProvidingExprFromClassResolver->resolveTypeProvidingExprFromClass(
116 if ($dicPropertyFetch instanceof PropertyFetch) {
117 return $dicPropertyFetch;
121 $alternatives = $DICMember->getAlternativeClasses();
122 foreach ($alternatives as $alternative) {
123 $dicPropertyFetch = $this->typeProvidingExprFromClassResolver->resolveTypeProvidingExprFromClass(
128 if ($dicPropertyFetch instanceof PropertyFetch) {
129 return $dicPropertyFetch;
134 $this->propertyToAddCollector->addPropertyWithoutConstructorToClass(
135 $DICMember->getPropertyName(),
140 $dicPropertyFetch =
new PropertyFetch(
141 new Variable(self::THIS),
142 $DICMember->getPropertyName()
147 new Variable(self::DIC)
150 $this->dicDependencyManipulator->ensureGlobalDICinConstructor(
154 $expression =
new Expression(
160 $this->dicDependencyManipulator->addStmtToConstructorIfNotThereAfterGlobalDIC(
165 return $dicPropertyFetch;
171 $expr =
new MethodCall(
186 return new ObjectType($name);
__construct(protected TypeProvidingExprFromClassResolver $typeProvidingExprFromClassResolver, protected DICDependencyManipulator $dicDependencyManipulator, protected PropertyToAddCollector $propertyToAddCollector, protected ClassInsertManipulator $classInsertManipulator, protected NodesToAddCollector $nodesToAddCollector, protected \Rector\Core\PhpParser\Node\NodeFactory $nodeFactory, protected ConstructorClassMethodFactory $constructorClassMethodFactory, protected \Rector\Core\NodeDecorator\PropertyTypeDecorator $propertyTypeDecorator, protected \Rector\ChangesReporting\Collector\RectorChangeCollector $rectorChangeCollector)
getObjectType(string $name)
ensureDICDependency(string $name, Class_ $class, ClassMethod $classMethod)
getStaticDICCall(DICMember $DICMember, Class_ $class, ClassMethod $classMethod)
appendDICMethods(DICMember $dicMember, Expr $expr)
DICMemberMap $DICMemberMap
getDICMemberByName(string $name)