diff --git a/src/Symfony/Component/DependencyInjection/Definition.php b/src/Symfony/Component/DependencyInjection/Definition.php index 550aa59b20265..8333ab5e27462 100644 --- a/src/Symfony/Component/DependencyInjection/Definition.php +++ b/src/Symfony/Component/DependencyInjection/Definition.php @@ -230,14 +230,15 @@ public function getArguments() * Sets the methods to call after service initialization. * * @param array $calls An array of method calls + * @param boolean $implicit If the method is added implicitly (via interface injection) * * @return Definition The current instance */ - public function setMethodCalls(array $calls = array()) + public function setMethodCalls(array $calls = array(), $implicit = false) { $this->calls = array(); foreach ($calls as $call) { - $this->addMethodCall($call[0], $call[1]); + $this->addMethodCall($call[0], $call[1], $implicit); } return $this; @@ -248,12 +249,13 @@ public function setMethodCalls(array $calls = array()) * * @param string $method The method name to call * @param array $arguments An array of arguments to pass to the method call + * @param boolean $implicit If the method is added implicitly (via interface injection) * * @return Definition The current instance */ - public function addMethodCall($method, array $arguments = array()) + public function addMethodCall($method, array $arguments = array(), $implicit = false) { - $this->calls[] = array($method, $arguments); + $this->calls[] = array($method, $arguments, $implicit); return $this; } diff --git a/src/Symfony/Component/DependencyInjection/InterfaceInjector.php b/src/Symfony/Component/DependencyInjection/InterfaceInjector.php index c403084279956..fc605785d394c 100755 --- a/src/Symfony/Component/DependencyInjection/InterfaceInjector.php +++ b/src/Symfony/Component/DependencyInjection/InterfaceInjector.php @@ -74,12 +74,19 @@ public function processDefinition(Definition $definition, $class = null) return; } + $this->processedDefinitions[] = $definition; + + $calls = $definition->getMethodCalls(); + foreach ($calls as $callback) { + if (empty($callback[2])) { + return; + } + } + foreach ($this->calls as $callback) { list($method, $arguments) = $callback; - $definition->addMethodCall($method, $arguments); + $definition->addMethodCall($method, $arguments, true); } - - $this->processedDefinitions[] = $definition; } /**
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: