2fec5d26d0fc57b7acf4225a8cea25c4b20961fd
[yaffs-website] / vendor / symfony / dependency-injection / Argument / ServiceClosureArgument.php
1 <?php
2
3 /*
4  * This file is part of the Symfony package.
5  *
6  * (c) Fabien Potencier <fabien@symfony.com>
7  *
8  * For the full copyright and license information, please view the LICENSE
9  * file that was distributed with this source code.
10  */
11
12 namespace Symfony\Component\DependencyInjection\Argument;
13
14 use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
15 use Symfony\Component\DependencyInjection\Reference;
16
17 /**
18  * Represents a service wrapped in a memoizing closure.
19  *
20  * @author Nicolas Grekas <p@tchwork.com>
21  */
22 class ServiceClosureArgument implements ArgumentInterface
23 {
24     private $values;
25
26     public function __construct(Reference $reference)
27     {
28         $this->values = array($reference);
29     }
30
31     /**
32      * {@inheritdoc}
33      */
34     public function getValues()
35     {
36         return $this->values;
37     }
38
39     /**
40      * {@inheritdoc}
41      */
42     public function setValues(array $values)
43     {
44         if (array(0) !== array_keys($values) || !($values[0] instanceof Reference || null === $values[0])) {
45             throw new InvalidArgumentException('A ServiceClosureArgument must hold one and only one Reference.');
46         }
47
48         $this->values = $values;
49     }
50 }