Mercurial > hg > isophonics-drupal-site
comparison vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Enum.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4c8ae668cc8c |
---|---|
1 <?php | |
2 | |
3 /* | |
4 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | |
5 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | |
6 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | |
7 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | |
8 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |
9 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |
10 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |
11 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | |
12 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |
13 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | |
14 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
15 * | |
16 * This software consists of voluntary contributions made by many individuals | |
17 * and is licensed under the MIT license. For more information, see | |
18 * <http://www.doctrine-project.org>. | |
19 */ | |
20 | |
21 namespace Doctrine\Common\Annotations\Annotation; | |
22 | |
23 /** | |
24 * Annotation that can be used to signal to the parser | |
25 * to check the available values during the parsing process. | |
26 * | |
27 * @since 2.4 | |
28 * @author Fabio B. Silva <fabio.bat.silva@gmail.com> | |
29 * | |
30 * @Annotation | |
31 * @Attributes({ | |
32 * @Attribute("value", required = true, type = "array"), | |
33 * @Attribute("literal", required = false, type = "array") | |
34 * }) | |
35 */ | |
36 final class Enum | |
37 { | |
38 /** | |
39 * @var array | |
40 */ | |
41 public $value; | |
42 | |
43 /** | |
44 * Literal target declaration. | |
45 * | |
46 * @var array | |
47 */ | |
48 public $literal; | |
49 | |
50 /** | |
51 * Annotation constructor. | |
52 * | |
53 * @param array $values | |
54 * | |
55 * @throws \InvalidArgumentException | |
56 */ | |
57 public function __construct(array $values) | |
58 { | |
59 if ( ! isset($values['literal'])) { | |
60 $values['literal'] = array(); | |
61 } | |
62 | |
63 foreach ($values['value'] as $var) { | |
64 if( ! is_scalar($var)) { | |
65 throw new \InvalidArgumentException(sprintf( | |
66 '@Enum supports only scalar values "%s" given.', | |
67 is_object($var) ? get_class($var) : gettype($var) | |
68 )); | |
69 } | |
70 } | |
71 | |
72 foreach ($values['literal'] as $key => $var) { | |
73 if( ! in_array($key, $values['value'])) { | |
74 throw new \InvalidArgumentException(sprintf( | |
75 'Undefined enumerator value "%s" for literal "%s".', | |
76 $key , $var | |
77 )); | |
78 } | |
79 } | |
80 | |
81 $this->value = $values['value']; | |
82 $this->literal = $values['literal']; | |
83 } | |
84 } |