PluginProbe ʕ •ᴥ•ʔ
Cookiebot by Usercentrics – Automatic Cookie Banner for GDPR/CCPA & Google Consent Mode / 4.0.0
Cookiebot by Usercentrics – Automatic Cookie Banner for GDPR/CCPA & Google Consent Mode v4.0.0
4.7.2 4.7.1 trunk 2.3.0 2.4.0 2.4.1 2.4.2 2.5.0 3.0.0 3.0.1 3.1.0 3.10.0 3.10.1 3.11.1 3.11.2 3.11.3 3.2.0 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.6.0 3.6.1 3.6.2 3.6.5 3.6.6 3.7.0 3.7.1 3.8.0 3.9.0 4.0.0 4.0.1 4.0.2 4.0.3 4.1.0 4.1.1 4.2.0 4.2.1 4.2.10 4.2.11 4.2.12 4.2.13 4.2.14 4.2.2 4.2.3 4.2.4 4.2.5 4.2.6 4.2.7 4.2.8 4.2.9 4.3.0 4.3.1 4.3.10 4.3.11 4.3.12 4.3.2 4.3.3 4.3.4 4.3.5 4.3.6 4.3.7 4.3.7.1 4.3.8 4.3.9 4.3.9.1 4.4.0 4.4.1 4.4.2 4.5.0 4.5.1 4.5.10 4.5.11 4.5.2 4.5.3 4.5.4 4.5.5 4.5.6 4.5.7 4.5.8 4.5.9 4.6.0 4.6.1 4.6.2 4.6.3 4.6.4 4.6.5 4.6.6 4.6.7 4.7.0
cookiebot / addons / inc / Dependencies / DI / Annotation / Inject.php
cookiebot / addons / inc / Dependencies / DI / Annotation Last commit date
Inject.php 5 years ago Injectable.php 5 years ago
Inject.php
96 lines
1 <?php
2 /**
3 * PHP-DI
4 *
5 * @link http://php-di.org/
6 * @copyright Matthieu Napoli (http://mnapoli.fr/)
7 * @license http://www.opensource.org/licenses/mit-license.php MIT (see the LICENSE file)
8 */
9
10 namespace Cybot\Dependencies\DI\Annotation;
11
12 use Cybot\Dependencies\DI\Definition\Exception\AnnotationException;
13
14 /**
15 * "Inject" annotation
16 *
17 * Marks a property or method as an injection point
18 *
19 * @Annotation
20 * @Target({"METHOD","PROPERTY"})
21 *
22 * @author Matthieu Napoli <matthieu@mnapoli.fr>
23 */
24 final class Inject
25 {
26 /**
27 * Entry name
28 * @var string
29 */
30 private $name;
31
32 /**
33 * Parameters, indexed by the parameter number (index) or name
34 *
35 * Used if the annotation is set on a method
36 * @var array
37 */
38 private $parameters = [];
39
40 /**
41 * @param array $values
42 */
43 public function __construct(array $values)
44 {
45 // Process the parameters as a list AND as a parameter array (we don't know on what the annotation is)
46
47 // @Inject(name="foo")
48 if (isset($values['name']) && is_string($values['name'])) {
49 $this->name = $values['name'];
50 return;
51 }
52
53 // @Inject
54 if (! isset($values['value'])) {
55 return;
56 }
57
58 $values = $values['value'];
59
60 // @Inject("foo")
61 if (is_string($values)) {
62 $this->name = $values;
63 }
64
65 // @Inject({...}) on a method
66 if (is_array($values)) {
67 foreach ($values as $key => $value) {
68 if (! is_string($value)) {
69 throw new AnnotationException(sprintf(
70 '@Inject({"param" = "value"}) expects "value" to be a string, %s given.',
71 json_encode($value)
72 ));
73 }
74
75 $this->parameters[$key] = $value;
76 }
77 }
78 }
79
80 /**
81 * @return string Name of the entry to inject
82 */
83 public function getName()
84 {
85 return $this->name;
86 }
87
88 /**
89 * @return array Parameters, indexed by the parameter number (index) or name
90 */
91 public function getParameters()
92 {
93 return $this->parameters;
94 }
95 }
96