Skip to content

Commit 4f36259

Browse files
committed
PhpGenerator: some formating logic moved to Resolver
1 parent 44f6481 commit 4f36259

File tree

3 files changed

+6
-7
lines changed

3 files changed

+6
-7
lines changed

src/DI/Definitions/ServiceDefinition.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,8 @@ public function generateMethod(Nette\PhpGenerator\Method $method, Nette\DI\PhpGe
230230

231231
if (
232232
$this->getSetup()
233-
&& !$entity instanceof Reference && $type !== $entity
233+
&& $type !== $entity
234+
&& !(is_array($entity) && $entity[0] instanceof Reference && $entity[0]->getValue() === Nette\DI\ContainerBuilder::THIS_CONTAINER)
234235
&& !(is_string($entity) && preg_match('#^[\w\\\\]+\z#', $entity) && is_subclass_of($entity, $type))
235236
) {
236237
$code .= PhpHelpers::formatArgs("if (!\$service instanceof $type) {\n"

src/DI/PhpGenerator.php

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -100,15 +100,9 @@ public function formatStatement(Statement $statement): string
100100
case is_string($entity) && Strings::contains($entity, '?'): // PHP literal
101101
return $this->formatPhp($entity, $arguments);
102102

103-
case $entity === 'not':
104-
return $this->formatPhp('!?', [$arguments[0]]);
105-
106103
case is_string($entity): // create class
107104
return $this->formatPhp("new $entity" . ($arguments ? '(...?)' : ''), $arguments ? [$arguments] : []);
108105

109-
case $entity instanceof Reference:
110-
return $this->formatPhp('$this->?(...?)', [Container::getMethodName($entity->getValue()), $arguments]);
111-
112106
case is_array($entity):
113107
switch (true) {
114108
case $entity[1][0] === '$': // property getter, setter or appender

src/DI/Resolver.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,10 @@ public function completeStatement(Statement $statement, bool $currentServiceAllo
167167

168168
switch (true) {
169169
case is_string($entity) && Strings::contains($entity, '?'): // PHP literal
170+
break;
171+
170172
case $entity === 'not':
173+
$entity = ['', '!'];
171174
break;
172175

173176
case is_string($entity): // create class
@@ -186,6 +189,7 @@ public function completeStatement(Statement $statement, bool $currentServiceAllo
186189
break;
187190

188191
case $entity instanceof Reference:
192+
$entity = [new Reference(ContainerBuilder::THIS_CONTAINER), Container::getMethodName($entity->getValue())];
189193
break;
190194

191195
case is_array($entity):

0 commit comments

Comments
 (0)