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 / Resolver / FactoryResolver.php
cookiebot / addons / inc / Dependencies / DI / Definition / Resolver Last commit date
AliasResolver.php 5 years ago ArrayResolver.php 5 years ago DecoratorResolver.php 5 years ago DefinitionResolver.php 5 years ago EnvironmentVariableResolver.php 5 years ago FactoryResolver.php 5 years ago InstanceInjector.php 5 years ago ObjectCreator.php 5 years ago ParameterResolver.php 5 years ago ResolverDispatcher.php 5 years ago StringResolver.php 5 years ago ValueResolver.php 5 years ago
FactoryResolver.php
86 lines
1 <?php
2 /**
3 * PHP-DI
4 *
5 * @link http://mnapoli.github.com/PHP-DI/
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\Resolver;
11
12 use Cybot\Dependencies\DI\Definition\Exception\DefinitionException;
13 use Cybot\Dependencies\DI\Definition\FactoryDefinition;
14 use Cybot\Dependencies\DI\Definition\Definition;
15 use Cybot\Dependencies\Interop\Container\ContainerInterface;
16
17 /**
18 * Resolves a factory definition to a value.
19 *
20 * @since 4.0
21 * @author Matthieu Napoli <matthieu@mnapoli.fr>
22 */
23 class FactoryResolver implements DefinitionResolver
24 {
25 /**
26 * @var ContainerInterface
27 */
28 private $container;
29
30 /**
31 * The resolver needs a container. This container will be passed to the factory as a parameter
32 * so that the factory can access other entries of the container.
33 *
34 * @param ContainerInterface $container
35 */
36 public function __construct(ContainerInterface $container)
37 {
38 $this->container = $container;
39 }
40
41 /**
42 * Resolve a factory definition to a value.
43 *
44 * This will call the callable of the definition.
45 *
46 * @param FactoryDefinition $definition
47 *
48 * {@inheritdoc}
49 */
50 public function resolve(Definition $definition, array $parameters = [])
51 {
52 $this->assertIsFactoryDefinition($definition);
53
54 $callable = $definition->getCallable();
55
56 if (! is_callable($callable)) {
57 throw new DefinitionException(sprintf(
58 'The factory definition "%s" is not callable',
59 $definition->getName()
60 ));
61 }
62
63 return call_user_func($callable, $this->container);
64 }
65
66 /**
67 * {@inheritdoc}
68 */
69 public function isResolvable(Definition $definition, array $parameters = [])
70 {
71 $this->assertIsFactoryDefinition($definition);
72
73 return true;
74 }
75
76 private function assertIsFactoryDefinition(Definition $definition)
77 {
78 if (!$definition instanceof FactoryDefinition) {
79 throw new \InvalidArgumentException(sprintf(
80 'This definition resolver is only compatible with FactoryDefinition objects, %s given',
81 get_class($definition)
82 ));
83 }
84 }
85 }
86