PluginProbe ʕ •ᴥ•ʔ
Cookiebot by Usercentrics – Automatic Cookie Banner for GDPR/CCPA & Google Consent Mode / 3.11.2
Cookiebot by Usercentrics – Automatic Cookie Banner for GDPR/CCPA & Google Consent Mode v3.11.2
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 / StringResolver.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
StringResolver.php
96 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\Definition;
13 use Cybot\Dependencies\DI\Definition\StringDefinition;
14 use Cybot\Dependencies\DI\DependencyException;
15 use Cybot\Dependencies\DI\NotFoundException;
16 use Cybot\Dependencies\Interop\Container\ContainerInterface;
17
18 /**
19 * Resolves a string expression.
20 *
21 * @since 5.0
22 * @author Matthieu Napoli <matthieu@mnapoli.fr>
23 */
24 class StringResolver implements DefinitionResolver
25 {
26 /**
27 * @var ContainerInterface
28 */
29 private $container;
30
31 /**
32 * The resolver needs a container.
33 * This container will be used to get the entry to which the alias points to.
34 *
35 * @param ContainerInterface $container
36 */
37 public function __construct(ContainerInterface $container)
38 {
39 $this->container = $container;
40 }
41
42 /**
43 * Resolve a value definition to a value.
44 *
45 * A value definition is simple, so this will just return the value of the ValueDefinition.
46 *
47 * @param StringDefinition $definition
48 *
49 * {@inheritdoc}
50 */
51 public function resolve(Definition $definition, array $parameters = [])
52 {
53 $this->assertIsStringDefinition($definition);
54
55 $expression = $definition->getExpression();
56
57 $result = preg_replace_callback('#\{([^\{\}]+)\}#', function (array $matches) use ($definition) {
58 try {
59 return $this->container->get($matches[1]);
60 } catch (NotFoundException $e) {
61 throw new DependencyException(sprintf(
62 "Error while parsing string expression for entry '%s': %s",
63 $definition->getName(),
64 $e->getMessage()
65 ), 0, $e);
66 }
67 }, $expression);
68
69 if ($result === null) {
70 throw new \RuntimeException(sprintf('An unknown error occurred while parsing the string definition: \'%s\'', $expression));
71 }
72
73 return $result;
74 }
75
76 /**
77 * {@inheritdoc}
78 */
79 public function isResolvable(Definition $definition, array $parameters = [])
80 {
81 $this->assertIsStringDefinition($definition);
82
83 return true;
84 }
85
86 private function assertIsStringDefinition(Definition $definition)
87 {
88 if (!$definition instanceof StringDefinition) {
89 throw new \InvalidArgumentException(sprintf(
90 'This definition resolver is only compatible with StringDefinition objects, %s given',
91 get_class($definition)
92 ));
93 }
94 }
95 }
96