PluginProbe ʕ •ᴥ•ʔ
Cookiebot by Usercentrics – Automatic Cookie Banner for GDPR/CCPA & Google Consent Mode / 3.11.1
Cookiebot by Usercentrics – Automatic Cookie Banner for GDPR/CCPA & Google Consent Mode v3.11.1
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 / Definition / Source / Autowiring.php
cookiebot / addons / inc / Dependencies / DI / Definition / Source Last commit date
AnnotationReader.php 5 years ago Autowiring.php 5 years ago CachedDefinitionSource.php 5 years ago DefinitionArray.php 5 years ago DefinitionFile.php 5 years ago DefinitionSource.php 5 years ago MutableDefinitionSource.php 5 years ago SourceChain.php 5 years ago
Autowiring.php
69 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\Definition\Source;
11
12 use Cybot\Dependencies\DI\Definition\ObjectDefinition;
13 use Cybot\Dependencies\DI\Definition\EntryReference;
14 use Cybot\Dependencies\DI\Definition\ObjectDefinition\MethodInjection;
15
16 /**
17 * Reads DI class definitions using reflection.
18 *
19 * @author Matthieu Napoli <matthieu@mnapoli.fr>
20 */
21 class Autowiring implements DefinitionSource
22 {
23 /**
24 * {@inheritdoc}
25 */
26 public function getDefinition($name)
27 {
28 if (!class_exists($name) && !interface_exists($name)) {
29 return null;
30 }
31
32 $definition = new ObjectDefinition($name);
33
34 // Constructor
35 $class = new \ReflectionClass($name);
36 $constructor = $class->getConstructor();
37 if ($constructor && $constructor->isPublic()) {
38 $definition->setConstructorInjection(
39 MethodInjection::constructor($this->getParametersDefinition($constructor))
40 );
41 }
42
43 return $definition;
44 }
45
46 /**
47 * Read the type-hinting from the parameters of the function.
48 */
49 private function getParametersDefinition(\ReflectionFunctionAbstract $constructor)
50 {
51 $parameters = [];
52
53 foreach ($constructor->getParameters() as $index => $parameter) {
54 // Skip optional parameters
55 if ($parameter->isOptional()) {
56 continue;
57 }
58
59 $parameterClass = $parameter->getClass();
60
61 if ($parameterClass) {
62 $parameters[$index] = new EntryReference($parameterClass->getName());
63 }
64 }
65
66 return $parameters;
67 }
68 }
69