} $this->methodInjections[$method][] = $methodInjection; } public function completeFirstMethodInjection(MethodInjection $injection) { $method = $injection->getMethodName(); if (isset($this->methodInjections[$method][0])) { // Merge $this->methodInjections[$method][0]->merge($injection); } else { // Set $this->addMethodInjection($injection); } } public function setLazy(bool $lazy = null) { $this->lazy = $lazy; } public function isLazy() : bool { if ($this->lazy !== null) { return $this->lazy; } // Default value return \false; } public function classExists() : bool { return $this->classExists; } public function isInstantiable() : bool { return $this->isInstantiable; } public function replaceNestedDefinitions(callable $replacer) { \array_walk($this->propertyInjections, function (PropertyInjection $propertyInjection) use($replacer) { $propertyInjection->replaceNestedDefinition($replacer); }); if ($this->constructorInjection) { $this->constructorInjection->replaceNestedDefinitions($replacer); } \array_walk($this->methodInjections, function ($injectionArray) use($replacer) { \array_walk($injectionArray, function (MethodInjection $methodInjection) use($replacer) { $methodInjection->replaceNestedDefinitions($replacer); }); }); } /** * Replaces all the wildcards in the string with the given replacements. * * @param string[] $replacements */ public function replaceWildcards(array $replacements) { $className = $this->getClassName(); foreach ($replacements as $replacement) { $pos = \strpos($className, DefinitionArray::WILDCARD); if ($pos !== \false) { $className = \substr_replace($className, $replacement, $pos, 1); } } $this->setClassName($className); } public function __toString() { return (new ObjectDefinitionDumper())->dump($this); } private function updateCache() { $className = $this->getClassName(); $this->classExists = \class_exists($className) || \interface_exists($className); if (!$this->classExists) { $this->isInstantiable = \false; return; } $class = new ReflectionClass($className); $this->isInstantiable = $class->isInstantiable(); } }