subDefinitionSubstituer = $locator; return $this; } /** * @return SubdefSubstituer */ public function getSubDefinitionSubstituer() { if ($this->subDefinitionSubstituer instanceof SubdefSubstituer) { return $this->subDefinitionSubstituer; } if (null === $this->subDefinitionSubstituer) { throw new \LogicException('Sub definition substituer locator was not set'); } $instance = call_user_func($this->subDefinitionSubstituer); if (!$instance instanceof SubdefSubstituer) { throw new \LogicException(sprintf( 'Expects locator to return instance of "%s", got "%s"', SubdefSubstituer::class, is_object($instance) ? get_class($instance) : gettype($instance) )); } $this->subDefinitionSubstituer = $instance; return $this->subDefinitionSubstituer; } }