| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917 | 
							- <?php
 
- /*
 
-  * This file is part of the Symfony package.
 
-  *
 
-  * (c) Fabien Potencier <fabien@symfony.com>
 
-  *
 
-  * For the full copyright and license information, please view the LICENSE
 
-  * file that was distributed with this source code.
 
-  */
 
- namespace Symfony\Component\DependencyInjection;
 
- use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
 
- use Symfony\Component\DependencyInjection\Exception\OutOfBoundsException;
 
- /**
 
-  * Definition represents a service definition.
 
-  *
 
-  * @author Fabien Potencier <fabien@symfony.com>
 
-  */
 
- class Definition
 
- {
 
-     private $class;
 
-     private $file;
 
-     private $factory;
 
-     private $factoryClass;
 
-     private $factoryMethod;
 
-     private $factoryService;
 
-     private $shared = true;
 
-     private $deprecated = false;
 
-     private $deprecationTemplate = 'The "%service_id%" service is deprecated. You should stop using it, as it will soon be removed.';
 
-     private $scope = ContainerInterface::SCOPE_CONTAINER;
 
-     private $properties = array();
 
-     private $calls = array();
 
-     private $configurator;
 
-     private $tags = array();
 
-     private $public = true;
 
-     private $synthetic = false;
 
-     private $abstract = false;
 
-     private $synchronized = false;
 
-     private $lazy = false;
 
-     private $decoratedService;
 
-     private $autowired = false;
 
-     private $autowiringTypes = array();
 
-     protected $arguments;
 
-     /**
 
-      * @param string|null $class     The service class
 
-      * @param array       $arguments An array of arguments to pass to the service constructor
 
-      */
 
-     public function __construct($class = null, array $arguments = array())
 
-     {
 
-         $this->class = $class;
 
-         $this->arguments = $arguments;
 
-     }
 
-     /**
 
-      * Sets a factory.
 
-      *
 
-      * @param string|array $factory A PHP function or an array containing a class/Reference and a method to call
 
-      *
 
-      * @return $this
 
-      */
 
-     public function setFactory($factory)
 
-     {
 
-         if (is_string($factory) && strpos($factory, '::') !== false) {
 
-             $factory = explode('::', $factory, 2);
 
-         }
 
-         $this->factory = $factory;
 
-         return $this;
 
-     }
 
-     /**
 
-      * Gets the factory.
 
-      *
 
-      * @return string|array The PHP function or an array containing a class/Reference and a method to call
 
-      */
 
-     public function getFactory()
 
-     {
 
-         return $this->factory;
 
-     }
 
-     /**
 
-      * Sets the name of the class that acts as a factory using the factory method,
 
-      * which will be invoked statically.
 
-      *
 
-      * @param string $factoryClass The factory class name
 
-      *
 
-      * @return $this
 
-      *
 
-      * @deprecated since version 2.6, to be removed in 3.0.
 
-      */
 
-     public function setFactoryClass($factoryClass)
 
-     {
 
-         @trigger_error(sprintf('%s(%s) is deprecated since version 2.6 and will be removed in 3.0. Use Definition::setFactory() instead.', __METHOD__, $factoryClass), E_USER_DEPRECATED);
 
-         $this->factoryClass = $factoryClass;
 
-         return $this;
 
-     }
 
-     /**
 
-      * Gets the factory class.
 
-      *
 
-      * @return string|null The factory class name
 
-      *
 
-      * @deprecated since version 2.6, to be removed in 3.0.
 
-      */
 
-     public function getFactoryClass($triggerDeprecationError = true)
 
-     {
 
-         if ($triggerDeprecationError) {
 
-             @trigger_error('The '.__METHOD__.' method is deprecated since version 2.6 and will be removed in 3.0.', E_USER_DEPRECATED);
 
-         }
 
-         return $this->factoryClass;
 
-     }
 
-     /**
 
-      * Sets the factory method able to create an instance of this class.
 
-      *
 
-      * @param string $factoryMethod The factory method name
 
-      *
 
-      * @return $this
 
-      *
 
-      * @deprecated since version 2.6, to be removed in 3.0.
 
-      */
 
-     public function setFactoryMethod($factoryMethod)
 
-     {
 
-         @trigger_error(sprintf('%s(%s) is deprecated since version 2.6 and will be removed in 3.0. Use Definition::setFactory() instead.', __METHOD__, $factoryMethod), E_USER_DEPRECATED);
 
-         $this->factoryMethod = $factoryMethod;
 
-         return $this;
 
-     }
 
-     /**
 
-      * Sets the service that this service is decorating.
 
-      *
 
-      * @param null|string $id        The decorated service id, use null to remove decoration
 
-      * @param null|string $renamedId The new decorated service id
 
-      * @param int         $priority  The priority of decoration
 
-      *
 
-      * @return $this
 
-      *
 
-      * @throws InvalidArgumentException In case the decorated service id and the new decorated service id are equals.
 
-      */
 
-     public function setDecoratedService($id, $renamedId = null, $priority = 0)
 
-     {
 
-         if ($renamedId && $id == $renamedId) {
 
-             throw new \InvalidArgumentException(sprintf('The decorated service inner name for "%s" must be different than the service name itself.', $id));
 
-         }
 
-         if (null === $id) {
 
-             $this->decoratedService = null;
 
-         } else {
 
-             $this->decoratedService = array($id, $renamedId, (int) $priority);
 
-         }
 
-         return $this;
 
-     }
 
-     /**
 
-      * Gets the service that this service is decorating.
 
-      *
 
-      * @return null|array An array composed of the decorated service id, the new id for it and the priority of decoration, null if no service is decorated
 
-      */
 
-     public function getDecoratedService()
 
-     {
 
-         return $this->decoratedService;
 
-     }
 
-     /**
 
-      * Gets the factory method.
 
-      *
 
-      * @return string|null The factory method name
 
-      *
 
-      * @deprecated since version 2.6, to be removed in 3.0.
 
-      */
 
-     public function getFactoryMethod($triggerDeprecationError = true)
 
-     {
 
-         if ($triggerDeprecationError) {
 
-             @trigger_error('The '.__METHOD__.' method is deprecated since version 2.6 and will be removed in 3.0.', E_USER_DEPRECATED);
 
-         }
 
-         return $this->factoryMethod;
 
-     }
 
-     /**
 
-      * Sets the name of the service that acts as a factory using the factory method.
 
-      *
 
-      * @param string $factoryService The factory service id
 
-      *
 
-      * @return $this
 
-      *
 
-      * @deprecated since version 2.6, to be removed in 3.0.
 
-      */
 
-     public function setFactoryService($factoryService, $triggerDeprecationError = true)
 
-     {
 
-         if ($triggerDeprecationError) {
 
-             @trigger_error(sprintf('%s(%s) is deprecated since version 2.6 and will be removed in 3.0. Use Definition::setFactory() instead.', __METHOD__, $factoryService), E_USER_DEPRECATED);
 
-         }
 
-         $this->factoryService = $factoryService;
 
-         return $this;
 
-     }
 
-     /**
 
-      * Gets the factory service id.
 
-      *
 
-      * @return string|null The factory service id
 
-      *
 
-      * @deprecated since version 2.6, to be removed in 3.0.
 
-      */
 
-     public function getFactoryService($triggerDeprecationError = true)
 
-     {
 
-         if ($triggerDeprecationError) {
 
-             @trigger_error('The '.__METHOD__.' method is deprecated since version 2.6 and will be removed in 3.0.', E_USER_DEPRECATED);
 
-         }
 
-         return $this->factoryService;
 
-     }
 
-     /**
 
-      * Sets the service class.
 
-      *
 
-      * @param string $class The service class
 
-      *
 
-      * @return $this
 
-      */
 
-     public function setClass($class)
 
-     {
 
-         $this->class = $class;
 
-         return $this;
 
-     }
 
-     /**
 
-      * Gets the service class.
 
-      *
 
-      * @return string|null The service class
 
-      */
 
-     public function getClass()
 
-     {
 
-         return $this->class;
 
-     }
 
-     /**
 
-      * Sets the arguments to pass to the service constructor/factory method.
 
-      *
 
-      * @param array $arguments An array of arguments
 
-      *
 
-      * @return $this
 
-      */
 
-     public function setArguments(array $arguments)
 
-     {
 
-         $this->arguments = $arguments;
 
-         return $this;
 
-     }
 
-     public function setProperties(array $properties)
 
-     {
 
-         $this->properties = $properties;
 
-         return $this;
 
-     }
 
-     public function getProperties()
 
-     {
 
-         return $this->properties;
 
-     }
 
-     public function setProperty($name, $value)
 
-     {
 
-         $this->properties[$name] = $value;
 
-         return $this;
 
-     }
 
-     /**
 
-      * Adds an argument to pass to the service constructor/factory method.
 
-      *
 
-      * @param mixed $argument An argument
 
-      *
 
-      * @return $this
 
-      */
 
-     public function addArgument($argument)
 
-     {
 
-         $this->arguments[] = $argument;
 
-         return $this;
 
-     }
 
-     /**
 
-      * Sets a specific argument.
 
-      *
 
-      * @param int   $index
 
-      * @param mixed $argument
 
-      *
 
-      * @return $this
 
-      *
 
-      * @throws OutOfBoundsException When the replaced argument does not exist
 
-      */
 
-     public function replaceArgument($index, $argument)
 
-     {
 
-         if (0 === count($this->arguments)) {
 
-             throw new OutOfBoundsException('Cannot replace arguments if none have been configured yet.');
 
-         }
 
-         if ($index < 0 || $index > count($this->arguments) - 1) {
 
-             throw new OutOfBoundsException(sprintf('The index "%d" is not in the range [0, %d].', $index, count($this->arguments) - 1));
 
-         }
 
-         $this->arguments[$index] = $argument;
 
-         return $this;
 
-     }
 
-     /**
 
-      * Gets the arguments to pass to the service constructor/factory method.
 
-      *
 
-      * @return array The array of arguments
 
-      */
 
-     public function getArguments()
 
-     {
 
-         return $this->arguments;
 
-     }
 
-     /**
 
-      * Gets an argument to pass to the service constructor/factory method.
 
-      *
 
-      * @param int $index
 
-      *
 
-      * @return mixed The argument value
 
-      *
 
-      * @throws OutOfBoundsException When the argument does not exist
 
-      */
 
-     public function getArgument($index)
 
-     {
 
-         if ($index < 0 || $index > count($this->arguments) - 1) {
 
-             throw new OutOfBoundsException(sprintf('The index "%d" is not in the range [0, %d].', $index, count($this->arguments) - 1));
 
-         }
 
-         return $this->arguments[$index];
 
-     }
 
-     /**
 
-      * Sets the methods to call after service initialization.
 
-      *
 
-      * @param array $calls An array of method calls
 
-      *
 
-      * @return $this
 
-      */
 
-     public function setMethodCalls(array $calls = array())
 
-     {
 
-         $this->calls = array();
 
-         foreach ($calls as $call) {
 
-             $this->addMethodCall($call[0], $call[1]);
 
-         }
 
-         return $this;
 
-     }
 
-     /**
 
-      * Adds a method to call after service initialization.
 
-      *
 
-      * @param string $method    The method name to call
 
-      * @param array  $arguments An array of arguments to pass to the method call
 
-      *
 
-      * @return $this
 
-      *
 
-      * @throws InvalidArgumentException on empty $method param
 
-      */
 
-     public function addMethodCall($method, array $arguments = array())
 
-     {
 
-         if (empty($method)) {
 
-             throw new InvalidArgumentException(sprintf('Method name cannot be empty.'));
 
-         }
 
-         $this->calls[] = array($method, $arguments);
 
-         return $this;
 
-     }
 
-     /**
 
-      * Removes a method to call after service initialization.
 
-      *
 
-      * @param string $method The method name to remove
 
-      *
 
-      * @return $this
 
-      */
 
-     public function removeMethodCall($method)
 
-     {
 
-         foreach ($this->calls as $i => $call) {
 
-             if ($call[0] === $method) {
 
-                 unset($this->calls[$i]);
 
-                 break;
 
-             }
 
-         }
 
-         return $this;
 
-     }
 
-     /**
 
-      * Check if the current definition has a given method to call after service initialization.
 
-      *
 
-      * @param string $method The method name to search for
 
-      *
 
-      * @return bool
 
-      */
 
-     public function hasMethodCall($method)
 
-     {
 
-         foreach ($this->calls as $call) {
 
-             if ($call[0] === $method) {
 
-                 return true;
 
-             }
 
-         }
 
-         return false;
 
-     }
 
-     /**
 
-      * Gets the methods to call after service initialization.
 
-      *
 
-      * @return array An array of method calls
 
-      */
 
-     public function getMethodCalls()
 
-     {
 
-         return $this->calls;
 
-     }
 
-     /**
 
-      * Sets tags for this definition.
 
-      *
 
-      * @param array $tags
 
-      *
 
-      * @return $this
 
-      */
 
-     public function setTags(array $tags)
 
-     {
 
-         $this->tags = $tags;
 
-         return $this;
 
-     }
 
-     /**
 
-      * Returns all tags.
 
-      *
 
-      * @return array An array of tags
 
-      */
 
-     public function getTags()
 
-     {
 
-         return $this->tags;
 
-     }
 
-     /**
 
-      * Gets a tag by name.
 
-      *
 
-      * @param string $name The tag name
 
-      *
 
-      * @return array An array of attributes
 
-      */
 
-     public function getTag($name)
 
-     {
 
-         return isset($this->tags[$name]) ? $this->tags[$name] : array();
 
-     }
 
-     /**
 
-      * Adds a tag for this definition.
 
-      *
 
-      * @param string $name       The tag name
 
-      * @param array  $attributes An array of attributes
 
-      *
 
-      * @return $this
 
-      */
 
-     public function addTag($name, array $attributes = array())
 
-     {
 
-         $this->tags[$name][] = $attributes;
 
-         return $this;
 
-     }
 
-     /**
 
-      * Whether this definition has a tag with the given name.
 
-      *
 
-      * @param string $name
 
-      *
 
-      * @return bool
 
-      */
 
-     public function hasTag($name)
 
-     {
 
-         return isset($this->tags[$name]);
 
-     }
 
-     /**
 
-      * Clears all tags for a given name.
 
-      *
 
-      * @param string $name The tag name
 
-      *
 
-      * @return $this
 
-      */
 
-     public function clearTag($name)
 
-     {
 
-         unset($this->tags[$name]);
 
-         return $this;
 
-     }
 
-     /**
 
-      * Clears the tags for this definition.
 
-      *
 
-      * @return $this
 
-      */
 
-     public function clearTags()
 
-     {
 
-         $this->tags = array();
 
-         return $this;
 
-     }
 
-     /**
 
-      * Sets a file to require before creating the service.
 
-      *
 
-      * @param string $file A full pathname to include
 
-      *
 
-      * @return $this
 
-      */
 
-     public function setFile($file)
 
-     {
 
-         $this->file = $file;
 
-         return $this;
 
-     }
 
-     /**
 
-      * Gets the file to require before creating the service.
 
-      *
 
-      * @return string|null The full pathname to include
 
-      */
 
-     public function getFile()
 
-     {
 
-         return $this->file;
 
-     }
 
-     /**
 
-      * Sets if the service must be shared or not.
 
-      *
 
-      * @param bool $shared Whether the service must be shared or not
 
-      *
 
-      * @return $this
 
-      */
 
-     public function setShared($shared)
 
-     {
 
-         $this->shared = (bool) $shared;
 
-         return $this;
 
-     }
 
-     /**
 
-      * Whether this service is shared.
 
-      *
 
-      * @return bool
 
-      */
 
-     public function isShared()
 
-     {
 
-         return $this->shared;
 
-     }
 
-     /**
 
-      * Sets the scope of the service.
 
-      *
 
-      * @param string $scope Whether the service must be shared or not
 
-      *
 
-      * @return $this
 
-      *
 
-      * @deprecated since version 2.8, to be removed in 3.0.
 
-      */
 
-     public function setScope($scope, $triggerDeprecationError = true)
 
-     {
 
-         if ($triggerDeprecationError) {
 
-             @trigger_error('The '.__METHOD__.' method is deprecated since version 2.8 and will be removed in 3.0.', E_USER_DEPRECATED);
 
-         }
 
-         if (ContainerInterface::SCOPE_PROTOTYPE === $scope) {
 
-             $this->setShared(false);
 
-         }
 
-         $this->scope = $scope;
 
-         return $this;
 
-     }
 
-     /**
 
-      * Returns the scope of the service.
 
-      *
 
-      * @return string
 
-      *
 
-      * @deprecated since version 2.8, to be removed in 3.0.
 
-      */
 
-     public function getScope($triggerDeprecationError = true)
 
-     {
 
-         if ($triggerDeprecationError) {
 
-             @trigger_error('The '.__METHOD__.' method is deprecated since version 2.8 and will be removed in 3.0.', E_USER_DEPRECATED);
 
-         }
 
-         return $this->scope;
 
-     }
 
-     /**
 
-      * Sets the visibility of this service.
 
-      *
 
-      * @param bool $boolean
 
-      *
 
-      * @return $this
 
-      */
 
-     public function setPublic($boolean)
 
-     {
 
-         $this->public = (bool) $boolean;
 
-         return $this;
 
-     }
 
-     /**
 
-      * Whether this service is public facing.
 
-      *
 
-      * @return bool
 
-      */
 
-     public function isPublic()
 
-     {
 
-         return $this->public;
 
-     }
 
-     /**
 
-      * Sets the synchronized flag of this service.
 
-      *
 
-      * @param bool $boolean
 
-      *
 
-      * @return $this
 
-      *
 
-      * @deprecated since version 2.7, will be removed in 3.0.
 
-      */
 
-     public function setSynchronized($boolean, $triggerDeprecationError = true)
 
-     {
 
-         if ($triggerDeprecationError) {
 
-             @trigger_error('The '.__METHOD__.' method is deprecated since version 2.7 and will be removed in 3.0.', E_USER_DEPRECATED);
 
-         }
 
-         $this->synchronized = (bool) $boolean;
 
-         return $this;
 
-     }
 
-     /**
 
-      * Whether this service is synchronized.
 
-      *
 
-      * @return bool
 
-      *
 
-      * @deprecated since version 2.7, will be removed in 3.0.
 
-      */
 
-     public function isSynchronized($triggerDeprecationError = true)
 
-     {
 
-         if ($triggerDeprecationError) {
 
-             @trigger_error('The '.__METHOD__.' method is deprecated since version 2.7 and will be removed in 3.0.', E_USER_DEPRECATED);
 
-         }
 
-         return $this->synchronized;
 
-     }
 
-     /**
 
-      * Sets the lazy flag of this service.
 
-      *
 
-      * @param bool $lazy
 
-      *
 
-      * @return $this
 
-      */
 
-     public function setLazy($lazy)
 
-     {
 
-         $this->lazy = (bool) $lazy;
 
-         return $this;
 
-     }
 
-     /**
 
-      * Whether this service is lazy.
 
-      *
 
-      * @return bool
 
-      */
 
-     public function isLazy()
 
-     {
 
-         return $this->lazy;
 
-     }
 
-     /**
 
-      * Sets whether this definition is synthetic, that is not constructed by the
 
-      * container, but dynamically injected.
 
-      *
 
-      * @param bool $boolean
 
-      *
 
-      * @return $this
 
-      */
 
-     public function setSynthetic($boolean)
 
-     {
 
-         $this->synthetic = (bool) $boolean;
 
-         return $this;
 
-     }
 
-     /**
 
-      * Whether this definition is synthetic, that is not constructed by the
 
-      * container, but dynamically injected.
 
-      *
 
-      * @return bool
 
-      */
 
-     public function isSynthetic()
 
-     {
 
-         return $this->synthetic;
 
-     }
 
-     /**
 
-      * Whether this definition is abstract, that means it merely serves as a
 
-      * template for other definitions.
 
-      *
 
-      * @param bool $boolean
 
-      *
 
-      * @return $this
 
-      */
 
-     public function setAbstract($boolean)
 
-     {
 
-         $this->abstract = (bool) $boolean;
 
-         return $this;
 
-     }
 
-     /**
 
-      * Whether this definition is abstract, that means it merely serves as a
 
-      * template for other definitions.
 
-      *
 
-      * @return bool
 
-      */
 
-     public function isAbstract()
 
-     {
 
-         return $this->abstract;
 
-     }
 
-     /**
 
-      * Whether this definition is deprecated, that means it should not be called
 
-      * anymore.
 
-      *
 
-      * @param bool   $status
 
-      * @param string $template Template message to use if the definition is deprecated
 
-      *
 
-      * @return $this
 
-      *
 
-      * @throws InvalidArgumentException When the message template is invalid.
 
-      */
 
-     public function setDeprecated($status = true, $template = null)
 
-     {
 
-         if (null !== $template) {
 
-             if (preg_match('#[\r\n]|\*/#', $template)) {
 
-                 throw new InvalidArgumentException('Invalid characters found in deprecation template.');
 
-             }
 
-             if (false === strpos($template, '%service_id%')) {
 
-                 throw new InvalidArgumentException('The deprecation template must contain the "%service_id%" placeholder.');
 
-             }
 
-             $this->deprecationTemplate = $template;
 
-         }
 
-         $this->deprecated = (bool) $status;
 
-         return $this;
 
-     }
 
-     /**
 
-      * Whether this definition is deprecated, that means it should not be called
 
-      * anymore.
 
-      *
 
-      * @return bool
 
-      */
 
-     public function isDeprecated()
 
-     {
 
-         return $this->deprecated;
 
-     }
 
-     /**
 
-      * Message to use if this definition is deprecated.
 
-      *
 
-      * @param string $id Service id relying on this definition
 
-      *
 
-      * @return string
 
-      */
 
-     public function getDeprecationMessage($id)
 
-     {
 
-         return str_replace('%service_id%', $id, $this->deprecationTemplate);
 
-     }
 
-     /**
 
-      * Sets a configurator to call after the service is fully initialized.
 
-      *
 
-      * @param callable $callable A PHP callable
 
-      *
 
-      * @return $this
 
-      */
 
-     public function setConfigurator($callable)
 
-     {
 
-         $this->configurator = $callable;
 
-         return $this;
 
-     }
 
-     /**
 
-      * Gets the configurator to call after the service is fully initialized.
 
-      *
 
-      * @return callable|null The PHP callable to call
 
-      */
 
-     public function getConfigurator()
 
-     {
 
-         return $this->configurator;
 
-     }
 
-     /**
 
-      * Sets types that will default to this definition.
 
-      *
 
-      * @param string[] $types
 
-      *
 
-      * @return $this
 
-      */
 
-     public function setAutowiringTypes(array $types)
 
-     {
 
-         $this->autowiringTypes = array();
 
-         foreach ($types as $type) {
 
-             $this->autowiringTypes[$type] = true;
 
-         }
 
-         return $this;
 
-     }
 
-     /**
 
-      * Is the definition autowired?
 
-      *
 
-      * @return bool
 
-      */
 
-     public function isAutowired()
 
-     {
 
-         return $this->autowired;
 
-     }
 
-     /**
 
-      * Sets autowired.
 
-      *
 
-      * @param bool $autowired
 
-      *
 
-      * @return $this
 
-      */
 
-     public function setAutowired($autowired)
 
-     {
 
-         $this->autowired = $autowired;
 
-         return $this;
 
-     }
 
-     /**
 
-      * Gets autowiring types that will default to this definition.
 
-      *
 
-      * @return string[]
 
-      */
 
-     public function getAutowiringTypes()
 
-     {
 
-         return array_keys($this->autowiringTypes);
 
-     }
 
-     /**
 
-      * Adds a type that will default to this definition.
 
-      *
 
-      * @param string $type
 
-      *
 
-      * @return $this
 
-      */
 
-     public function addAutowiringType($type)
 
-     {
 
-         $this->autowiringTypes[$type] = true;
 
-         return $this;
 
-     }
 
-     /**
 
-      * Removes a type.
 
-      *
 
-      * @param string $type
 
-      *
 
-      * @return $this
 
-      */
 
-     public function removeAutowiringType($type)
 
-     {
 
-         unset($this->autowiringTypes[$type]);
 
-         return $this;
 
-     }
 
-     /**
 
-      * Will this definition default for the given type?
 
-      *
 
-      * @param string $type
 
-      *
 
-      * @return bool
 
-      */
 
-     public function hasAutowiringType($type)
 
-     {
 
-         return isset($this->autowiringTypes[$type]);
 
-     }
 
- }
 
 
  |