X-Git-Url: https://yaffs.net/gitweb/?a=blobdiff_plain;f=vendor%2Fsymfony%2Fdependency-injection%2FDefinition.php;h=e05b81b50fdd597d9af273302461cf086604f915;hb=1c1cb0980bfa6caf0c24cce671b6bb541dc87583;hp=aee2edb81debf8dda388d0312c4bbea606a3ac4c;hpb=9917807b03b64faf00f6a1f29dcb6eafc454efa5;p=yaffs-website diff --git a/vendor/symfony/dependency-injection/Definition.php b/vendor/symfony/dependency-injection/Definition.php index aee2edb81..e05b81b50 100644 --- a/vendor/symfony/dependency-injection/Definition.php +++ b/vendor/symfony/dependency-injection/Definition.php @@ -11,6 +11,7 @@ namespace Symfony\Component\DependencyInjection; +use Symfony\Component\DependencyInjection\Argument\BoundArgument; use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException; use Symfony\Component\DependencyInjection\Exception\OutOfBoundsException; @@ -29,19 +30,25 @@ class Definition private $deprecationTemplate; private $properties = array(); private $calls = array(); + private $instanceof = array(); + private $autoconfigured = false; private $configurator; private $tags = array(); private $public = true; + private $private = true; private $synthetic = false; private $abstract = false; private $lazy = false; private $decoratedService; private $autowired = false; private $autowiringTypes = array(); + private $changes = array(); + private $bindings = array(); + private $errors = array(); - private static $defaultDeprecationTemplate = 'The "%service_id%" service is deprecated. You should stop using it, as it will soon be removed.'; + protected $arguments = array(); - protected $arguments; + private static $defaultDeprecationTemplate = 'The "%service_id%" service is deprecated. You should stop using it, as it will soon be removed.'; /** * @param string|null $class The service class @@ -49,10 +56,36 @@ class Definition */ public function __construct($class = null, array $arguments = array()) { - $this->class = $class; + if (null !== $class) { + $this->setClass($class); + } $this->arguments = $arguments; } + /** + * Returns all changes tracked for the Definition object. + * + * @return array An array of changes for this Definition + */ + public function getChanges() + { + return $this->changes; + } + + /** + * Sets the tracked changes for the Definition object. + * + * @param array $changes An array of changes for this Definition + * + * @return $this + */ + public function setChanges(array $changes) + { + $this->changes = $changes; + + return $this; + } + /** * Sets a factory. * @@ -62,7 +95,9 @@ class Definition */ public function setFactory($factory) { - if (is_string($factory) && strpos($factory, '::') !== false) { + $this->changes['factory'] = true; + + if (\is_string($factory) && false !== strpos($factory, '::')) { $factory = explode('::', $factory, 2); } @@ -74,7 +109,7 @@ class Definition /** * Gets the factory. * - * @return string|array The PHP function or an array containing a class/Reference and a method to call + * @return string|array|null The PHP function or an array containing a class/Reference and a method to call */ public function getFactory() { @@ -84,20 +119,22 @@ class Definition /** * 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 string|null $id The decorated service id, use null to remove decoration + * @param string|null $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. + * @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) { + if ($renamedId && $id === $renamedId) { throw new InvalidArgumentException(sprintf('The decorated service inner name for "%s" must be different than the service name itself.', $id)); } + $this->changes['decorated_service'] = true; + if (null === $id) { $this->decoratedService = null; } else { @@ -110,7 +147,7 @@ class Definition /** * 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 + * @return array|null 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() { @@ -126,6 +163,8 @@ class Definition */ public function setClass($class) { + $this->changes['class'] = true; + $this->class = $class; return $this; @@ -144,8 +183,6 @@ class Definition /** * 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) @@ -155,6 +192,11 @@ class Definition return $this; } + /** + * Sets the properties to define when creating the service. + * + * @return $this + */ public function setProperties(array $properties) { $this->properties = $properties; @@ -162,11 +204,24 @@ class Definition return $this; } + /** + * Gets the properties to define when creating the service. + * + * @return array + */ public function getProperties() { return $this->properties; } + /** + * Sets a specific property. + * + * @param string $name + * @param mixed $value + * + * @return $this + */ public function setProperty($name, $value) { $this->properties[$name] = $value; @@ -189,10 +244,10 @@ class Definition } /** - * Sets a specific argument. + * Replaces a specific argument. * - * @param int $index - * @param mixed $argument + * @param int|string $index + * @param mixed $argument * * @return $this * @@ -200,12 +255,16 @@ class Definition */ public function replaceArgument($index, $argument) { - if (0 === count($this->arguments)) { + 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)); + if (\is_int($index) && ($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)); + } + + if (!array_key_exists($index, $this->arguments)) { + throw new OutOfBoundsException(sprintf('The argument "%s" doesn\'t exist.', $index)); } $this->arguments[$index] = $argument; @@ -213,6 +272,21 @@ class Definition return $this; } + /** + * Sets a specific argument. + * + * @param int|string $key + * @param mixed $value + * + * @return $this + */ + public function setArgument($key, $value) + { + $this->arguments[$key] = $value; + + return $this; + } + /** * Gets the arguments to pass to the service constructor/factory method. * @@ -226,7 +300,7 @@ class Definition /** * Gets an argument to pass to the service constructor/factory method. * - * @param int $index + * @param int|string $index * * @return mixed The argument value * @@ -234,8 +308,8 @@ class Definition */ 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)); + if (!array_key_exists($index, $this->arguments)) { + throw new OutOfBoundsException(sprintf('The argument "%s" doesn\'t exist.', $index)); } return $this->arguments[$index]; @@ -244,8 +318,6 @@ class Definition /** * Sets the methods to call after service initialization. * - * @param array $calls An array of method calls - * * @return $this */ public function setMethodCalls(array $calls = array()) @@ -326,9 +398,55 @@ class Definition } /** - * Sets tags for this definition. + * Sets the definition templates to conditionally apply on the current definition, keyed by parent interface/class. * - * @param array $tags + * @param $instanceof ChildDefinition[] + * + * @return $this + */ + public function setInstanceofConditionals(array $instanceof) + { + $this->instanceof = $instanceof; + + return $this; + } + + /** + * Gets the definition templates to conditionally apply on the current definition, keyed by parent interface/class. + * + * @return ChildDefinition[] + */ + public function getInstanceofConditionals() + { + return $this->instanceof; + } + + /** + * Sets whether or not instanceof conditionals should be prepended with a global set. + * + * @param bool $autoconfigured + * + * @return $this + */ + public function setAutoconfigured($autoconfigured) + { + $this->changes['autoconfigured'] = true; + + $this->autoconfigured = $autoconfigured; + + return $this; + } + + /** + * @return bool + */ + public function isAutoconfigured() + { + return $this->autoconfigured; + } + + /** + * Sets tags for this definition. * * @return $this */ @@ -423,6 +541,8 @@ class Definition */ public function setFile($file) { + $this->changes['file'] = true; + $this->file = $file; return $this; @@ -447,6 +567,8 @@ class Definition */ public function setShared($shared) { + $this->changes['shared'] = true; + $this->shared = (bool) $shared; return $this; @@ -471,7 +593,10 @@ class Definition */ public function setPublic($boolean) { + $this->changes['public'] = true; + $this->public = (bool) $boolean; + $this->private = false; return $this; } @@ -486,6 +611,35 @@ class Definition return $this->public; } + /** + * Sets if this service is private. + * + * When set, the "private" state has a higher precedence than "public". + * In version 3.4, a "private" service always remains publicly accessible, + * but triggers a deprecation notice when accessed from the container, + * so that the service can be made really private in 4.0. + * + * @param bool $boolean + * + * @return $this + */ + public function setPrivate($boolean) + { + $this->private = (bool) $boolean; + + return $this; + } + + /** + * Whether this service is private. + * + * @return bool + */ + public function isPrivate() + { + return $this->private; + } + /** * Sets the lazy flag of this service. * @@ -495,6 +649,8 @@ class Definition */ public function setLazy($lazy) { + $this->changes['lazy'] = true; + $this->lazy = (bool) $lazy; return $this; @@ -571,7 +727,7 @@ class Definition * * @return $this * - * @throws InvalidArgumentException When the message template is invalid. + * @throws InvalidArgumentException when the message template is invalid */ public function setDeprecated($status = true, $template = null) { @@ -587,6 +743,8 @@ class Definition $this->deprecationTemplate = $template; } + $this->changes['deprecated'] = true; + $this->deprecated = (bool) $status; return $this; @@ -624,7 +782,9 @@ class Definition */ public function setConfigurator($configurator) { - if (is_string($configurator) && strpos($configurator, '::') !== false) { + $this->changes['configurator'] = true; + + if (\is_string($configurator) && false !== strpos($configurator, '::')) { $configurator = explode('::', $configurator, 2); } @@ -649,9 +809,13 @@ class Definition * @param string[] $types * * @return $this + * + * @deprecated since version 3.3, to be removed in 4.0. */ public function setAutowiringTypes(array $types) { + @trigger_error('Autowiring-types are deprecated since Symfony 3.3 and will be removed in 4.0. Use aliases instead.', E_USER_DEPRECATED); + $this->autowiringTypes = array(); foreach ($types as $type) { @@ -672,7 +836,7 @@ class Definition } /** - * Sets autowired. + * Enables/disables autowiring. * * @param bool $autowired * @@ -680,7 +844,9 @@ class Definition */ public function setAutowired($autowired) { - $this->autowired = $autowired; + $this->changes['autowired'] = true; + + $this->autowired = (bool) $autowired; return $this; } @@ -689,9 +855,15 @@ class Definition * Gets autowiring types that will default to this definition. * * @return string[] + * + * @deprecated since version 3.3, to be removed in 4.0. */ - public function getAutowiringTypes() + public function getAutowiringTypes(/*$triggerDeprecation = true*/) { + if (1 > \func_num_args() || func_get_arg(0)) { + @trigger_error('Autowiring-types are deprecated since Symfony 3.3 and will be removed in 4.0. Use aliases instead.', E_USER_DEPRECATED); + } + return array_keys($this->autowiringTypes); } @@ -701,9 +873,13 @@ class Definition * @param string $type * * @return $this + * + * @deprecated since version 3.3, to be removed in 4.0. */ public function addAutowiringType($type) { + @trigger_error(sprintf('Autowiring-types are deprecated since Symfony 3.3 and will be removed in 4.0. Use aliases instead for "%s".', $type), E_USER_DEPRECATED); + $this->autowiringTypes[$type] = true; return $this; @@ -715,9 +891,13 @@ class Definition * @param string $type * * @return $this + * + * @deprecated since version 3.3, to be removed in 4.0. */ public function removeAutowiringType($type) { + @trigger_error(sprintf('Autowiring-types are deprecated since Symfony 3.3 and will be removed in 4.0. Use aliases instead for "%s".', $type), E_USER_DEPRECATED); + unset($this->autowiringTypes[$type]); return $this; @@ -729,9 +909,67 @@ class Definition * @param string $type * * @return bool + * + * @deprecated since version 3.3, to be removed in 4.0. */ public function hasAutowiringType($type) { + @trigger_error(sprintf('Autowiring-types are deprecated since Symfony 3.3 and will be removed in 4.0. Use aliases instead for "%s".', $type), E_USER_DEPRECATED); + return isset($this->autowiringTypes[$type]); } + + /** + * Gets bindings. + * + * @return array + */ + public function getBindings() + { + return $this->bindings; + } + + /** + * Sets bindings. + * + * Bindings map $named or FQCN arguments to values that should be + * injected in the matching parameters (of the constructor, of methods + * called and of controller actions). + * + * @param array $bindings + * + * @return $this + */ + public function setBindings(array $bindings) + { + foreach ($bindings as $key => $binding) { + if (!$binding instanceof BoundArgument) { + $bindings[$key] = new BoundArgument($binding); + } + } + + $this->bindings = $bindings; + + return $this; + } + + /** + * Add an error that occurred when building this Definition. + * + * @param string $error + */ + public function addError($error) + { + $this->errors[] = $error; + } + + /** + * Returns any errors that occurred while building this Definition. + * + * @return array + */ + public function getErrors() + { + return $this->errors; + } }