Skip to content

Commit 98eb0e6

Browse files
committed
ContainerBuilder: added check that accessor have no setup
1 parent 2e2f5cd commit 98eb0e6

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

src/DI/ContainerBuilder.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -386,6 +386,8 @@ private function resolveImplement(ServiceDefinition $def, $name): void
386386
if ($rc->hasMethod('get')) {
387387
if ($method->getParameters()) {
388388
throw new ServiceCreationException("Method $methodName used in service '$name' must have no arguments.");
389+
} elseif ($def->getSetup()) {
390+
throw new ServiceCreationException("Service accessor '$name' must have no setup.");
389391
}
390392
if (!$def->getEntity()) {
391393
$def->setFactory('@\\' . ltrim($def->getType(), '\\'));

tests/DI/Compiler.generatedFactory.phpt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -313,3 +313,17 @@ Assert::exception(function () {
313313
$builder->addDefinition('one')->setImplement('Bad6')->setFactory('Bad5');
314314
$builder->complete();
315315
}, Nette\InvalidStateException::class, 'Unused parameter $baz when implementing method Bad6::create().');
316+
317+
318+
319+
interface Bad7
320+
{
321+
public function get();
322+
}
323+
324+
Assert::exception(function () {
325+
$builder = new DI\ContainerBuilder;
326+
$builder->addDefinition('stdClass')->setFactory('stdClass');
327+
$builder->addDefinition('one')->setImplement('Bad7')->setClass('stdClass')->addSetup('method');
328+
$builder->complete();
329+
}, Nette\InvalidStateException::class, "Service accessor 'one' must have no setup.");

0 commit comments

Comments
 (0)