diff --git a/src/DI/Definitions/ServiceDefinition.php b/src/DI/Definitions/ServiceDefinition.php index 231e35d1a..8bdd84fe6 100644 --- a/src/DI/Definitions/ServiceDefinition.php +++ b/src/DI/Definitions/ServiceDefinition.php @@ -237,12 +237,16 @@ public function complete(Nette\DI\Resolver $resolver): void public function generateMethod(Nette\PhpGenerator\Method $method, Nette\DI\PhpGenerator $generator): void { $entity = $this->factory->getEntity(); - $code = '$service = ' . $generator->formatStatement($this->factory) . ";\n"; - $type = $this->getType(); + $code = $generator->formatStatement($this->factory) . ";\n"; + if (!$this->setup) { + $method->setBody('return ' . $code); + return; + } + $code = '$service = ' . $code; + $type = $this->getType(); if ( - $this->setup - && $type !== $entity + $type !== $entity && !(is_array($entity) && $entity[0] instanceof Reference && $entity[0]->getValue() === Nette\DI\ContainerBuilder::THIS_CONTAINER) && !(is_string($entity) && preg_match('#^[\w\\\\]+$#D', $entity) && is_subclass_of($entity, $type)) ) { diff --git a/tests/DI/Definitions.FactoryDefinition.render.phpt b/tests/DI/Definitions.FactoryDefinition.render.phpt index b647da24c..c8795b091 100644 --- a/tests/DI/Definitions.FactoryDefinition.render.phpt +++ b/tests/DI/Definitions.FactoryDefinition.render.phpt @@ -49,8 +49,7 @@ test(function () { public function create(): stdClass { - $service = new stdClass; - return $service; + return new stdClass; } }; }', $method->__toString());