* @deprecated New services must be registered using Dependency Injection Container */ abstract class ConfigurableService extends Configurable implements ServiceLocatorAwareInterface { use ServiceManagerAwareTrait; /** @var string Documentation header */ protected $header = null; /** @var object[] */ private $subServices = []; /** * Get the service manager * * @deprecated Use $this->propagate instead * * @param $serviceManager */ public function setServiceManager($serviceManager) { $this->setServiceLocator($serviceManager); } /** * Get a subservice from the current service $options * * @param $id * @param string $interface * @return mixed * @throws InvalidService * @throws InvalidServiceManagerException * @deprecated New services must be registered using Dependency Injection Container */ public function getSubService($id, $interface = null) { if (! isset($this->subServices[$id])) { if ($this->hasOption($id)) { $service = $this->buildService($this->getOption($id), $interface); if ($service) { $this->subServices[$id] = $service; } else { throw new ServiceNotFoundException($id); } } else { throw new ServiceNotFoundException($id); } } return $this->subServices[$id]; } /** * Set the documentation header uses into config file * * @param $header * @deprecated New services must be registered using Dependency Injection Container */ public function setHeader($header) { $this->header = $header; } /** * Return the documentation header * * @return string * @deprecated New services must be registered using Dependency Injection Container */ public function getHeader() { if (is_null($this->header)) { return $this->getDefaultHeader(); } else { return $this->header; } } /** * Get the documentation header * * @return string * @deprecated New services must be registered using Dependency Injection Container */ protected function getDefaultHeader() { return 'propagate($serviceDefinition); return $serviceDefinition; } else { throw new InvalidService('Service must implements ' . $interfaceName); } } elseif (is_array($serviceDefinition) && isset($serviceDefinition['class'])) { $classname = $serviceDefinition['class']; $options = isset($serviceDefinition['options']) ? $serviceDefinition['options'] : []; if (is_null($interfaceName) || is_a($classname, $interfaceName, true)) { return $this->getServiceManager()->build($classname, $options); } else { throw new InvalidService('Service must implements ' . $interfaceName); } } else { throw new InvalidService(); } } }