Skip to content

Commit baf98fd

Browse files
committed
ContainerBuilder: checks for function/property name validity
1 parent c57746a commit baf98fd

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

src/DI/ContainerBuilder.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -610,6 +610,9 @@ public function formatStatement(Statement $statement)
610610
} elseif (!Nette\Utils\Arrays::isList($entity) || count($entity) !== 2) {
611611
throw new ServiceCreationException(sprintf('Expected class, method or property, %s given.', PhpHelpers::dump($entity)));
612612

613+
} elseif (!preg_match('#^\$?' . PhpHelpers::PHP_IDENT . '\z#', $entity[1])) {
614+
throw new ServiceCreationException("Expected function, method or property name, '$entity[1]' given.");
615+
613616
} elseif ($entity[0] === '') { // globalFunc
614617
return $this->formatPhp("$entity[1](?*)", array($arguments));
615618

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?php
2+
3+
/**
4+
* Test: Nette\DI\ContainerBuilder.
5+
*/
6+
7+
use Nette\DI,
8+
Tester\Assert;
9+
10+
11+
require __DIR__ . '/../bootstrap.php';
12+
13+
14+
$builder = new DI\ContainerBuilder;
15+
$builder->addDefinition('one')
16+
->setClass('stdClass')
17+
->addSetup('::1234');
18+
19+
Assert::exception(function() use ($builder) {
20+
$builder->generateClasses();
21+
}, 'Nette\InvalidStateException', "Service 'one': Expected function, method or property name, '1234' given.");

0 commit comments

Comments
 (0)