1 | <?php |
||
14 | class Container extends Configuration implements ContainerInterface, FactoryInterface |
||
15 | { |
||
16 | /** |
||
17 | * @var bool[] map where component name => TRUE, if the component has been initialized |
||
18 | */ |
||
19 | protected $active = []; |
||
20 | |||
21 | /** |
||
22 | * @param Configuration $config |
||
23 | */ |
||
24 | 1 | public function __construct(Configuration $config) |
|
36 | |||
37 | /** |
||
38 | * Resolve the registered component with the given name. |
||
39 | * |
||
40 | * @param string $name component name |
||
41 | * |
||
42 | * @return mixed |
||
43 | * |
||
44 | * @throws ContainerException |
||
45 | * @throws NotFoundException |
||
46 | */ |
||
47 | 1 | public function get($name) |
|
69 | |||
70 | /** |
||
71 | * Check for the existence of a component with a given name. |
||
72 | * |
||
73 | * @param string $name component name |
||
74 | * |
||
75 | * @return bool true, if a component with the given name has been defined |
||
76 | */ |
||
77 | 1 | public function has($name) |
|
81 | |||
82 | /** |
||
83 | * Check if a component has been unboxed and is currently active. |
||
84 | * |
||
85 | * @param string $name component name |
||
86 | * |
||
87 | * @return bool |
||
88 | */ |
||
89 | 1 | public function isActive($name) |
|
93 | |||
94 | /** |
||
95 | * Call any given callable, using dependency injection to satisfy it's arguments, and/or |
||
96 | * manually specifying some of those arguments - then return the value from the call. |
||
97 | * |
||
98 | * This will work for any callable: |
||
99 | * |
||
100 | * $container->call('foo'); // function foo() |
||
101 | * $container->call($foo, 'baz'); // instance method $foo->baz() |
||
102 | * $container->call([Foo::class, 'bar']); // static method Foo::bar() |
||
103 | * $container->call($foo); // closure (or class implementing __invoke) |
||
104 | * |
||
105 | * In any of those examples, you can also supply custom arguments, either named or |
||
106 | * positional, or mixed, as per the `$map` argument in `register()`, `configure()`, etc. |
||
107 | * |
||
108 | * See also {@see create()} which lets you invoke any constructor. |
||
109 | * |
||
110 | * @param callable|object $callback any arbitrary closure or callable, or object implementing __invoke() |
||
111 | * @param mixed|mixed[] $map mixed list/map of parameter values (and/or boxed values) |
||
112 | * |
||
113 | * @return mixed return value from the given callable |
||
114 | */ |
||
115 | 1 | public function call($callback, $map = []) |
|
121 | |||
122 | /** |
||
123 | * Create an instance of a given class. |
||
124 | * |
||
125 | * The container will internally resolve and inject any constructor arguments |
||
126 | * not explicitly provided in the (optional) second parameter. |
||
127 | * |
||
128 | * @param string $class_name fully-qualified class-name |
||
129 | * @param mixed|mixed[] $map mixed list/map of parameter values (and/or boxed values) |
||
130 | * |
||
131 | * @return mixed |
||
132 | */ |
||
133 | 1 | public function create($class_name, $map = []) |
|
153 | |||
154 | /** |
||
155 | * Internally resolves parameters to functions or constructors. |
||
156 | * |
||
157 | * This is the heart of the beast. |
||
158 | * |
||
159 | * @param ReflectionParameter[] $params parameter reflections |
||
160 | * @param array $map mixed list/map of parameter values (and/or boxed values) |
||
161 | * @param bool $safe if TRUE, it's considered safe to resolve against parameter names |
||
162 | * |
||
163 | * @return array parameters |
||
164 | * |
||
165 | * @throws ContainerException |
||
166 | * @throws NotFoundException |
||
167 | */ |
||
168 | 1 | protected function resolve(array $params, $map, $safe = true) |
|
215 | |||
216 | /** |
||
217 | * Dynamically inject a component into this Container. |
||
218 | * |
||
219 | * Enables classes that extend `Container` to dynamically inject components (to implement "auto-wiring") |
||
220 | * |
||
221 | * @param string $name |
||
222 | * @param mixed $value |
||
223 | */ |
||
224 | 1 | protected function inject($name, $value) |
|
229 | |||
230 | /** |
||
231 | * Internally initialize an active component. |
||
232 | * |
||
233 | * @param string $name component name |
||
234 | * |
||
235 | * @return void |
||
236 | */ |
||
237 | 1 | private function initialize($name) |
|
255 | } |
||
256 |
Our type inference engine has found an assignment to a property that is incompatible with the declared type of that property.
Either this assignment is in error or the assigned type should be added to the documentation/type hint for that property..