4 * This file is part of the Symfony package.
6 * (c) Fabien Potencier <fabien@symfony.com>
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
12 namespace Symfony\Component\DependencyInjection\Loader\Configurator;
14 use Symfony\Component\DependencyInjection\Definition;
15 use Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException;
17 abstract class AbstractServiceConfigurator extends AbstractConfigurator
21 private $defaultTags = array();
23 public function __construct(ServicesConfigurator $parent, Definition $definition, $id = null, array $defaultTags = array())
25 $this->parent = $parent;
26 $this->definition = $definition;
28 $this->defaultTags = $defaultTags;
31 public function __destruct()
33 // default tags should be added last
34 foreach ($this->defaultTags as $name => $attributes) {
35 foreach ($attributes as $attributes) {
36 $this->definition->addTag($name, $attributes);
39 $this->defaultTags = array();
43 * Registers a service.
46 * @param string|null $class
48 * @return ServiceConfigurator
50 final public function set($id, $class = null)
54 return $this->parent->set($id, $class);
61 * @param string $referencedId
63 * @return AliasConfigurator
65 final public function alias($id, $referencedId)
69 return $this->parent->alias($id, $referencedId);
73 * Registers a PSR-4 namespace using a glob pattern.
75 * @param string $namespace
76 * @param string $resource
78 * @return PrototypeConfigurator
80 final public function load($namespace, $resource)
84 return $this->parent->load($namespace, $resource);
88 * Gets an already defined service definition.
92 * @return ServiceConfigurator
94 * @throws ServiceNotFoundException if the service definition does not exist
96 final public function get($id)
100 return $this->parent->get($id);
104 * Registers a service.
107 * @param string|null $class
109 * @return ServiceConfigurator
111 final public function __invoke($id, $class = null)
115 return $this->parent->set($id, $class);