PluginProbe
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot / 4.5.3
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot v4.5.3
4.9.1 4.9.0 4.8.2 4.8.1 4.8.0 4.7.0 4.6.2 4.6.1 4.6.0 4.5.6 4.5.5 4.5.4 4.5.3 4.5.2 4.5.1 4.5.0 4.4.1 4.4.0 3.3.4 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.5.2 All 199 releases
betterdocs / vendor / php-di / php-di / src / Definition / Resolver / ArrayResolver.php

ArrayResolver.php in BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot 4.5.3, at vendor/php-di/php-di/src/Definition/Resolver/ArrayResolver.php

77 lines 1.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 declare(strict_types=1);
4
5 namespace DI\Definition\Resolver;
6
7 use DI\Definition\ArrayDefinition;
8 use DI\Definition\Definition;
9 use DI\DependencyException;
10 use Exception;
11
12 /**
13 * Resolves an array definition to a value.
14 *
15 * @since 5.0
16 * @author Matthieu Napoli <matthieu@mnapoli.fr>
17 */
18 class ArrayResolver implements DefinitionResolver
19 {
20 /**
21 * @var DefinitionResolver
22 */
23 private $definitionResolver;
24
25 /**
26 * @param DefinitionResolver $definitionResolver Used to resolve nested definitions.
27 */
28 public function __construct(DefinitionResolver $definitionResolver)
29 {
30 $this->definitionResolver = $definitionResolver;
31 }
32
33 /**
34 * Resolve an array definition to a value.
35 *
36 * An array definition can contain simple values or references to other entries.
37 *
38 * {@inheritdoc}
39 *
40 * @param ArrayDefinition $definition
41 */
42 public function resolve(Definition $definition, array $parameters = []) : array
43 {
44 $values = $definition->getValues();
45
46 // Resolve nested definitions
47 array_walk_recursive($values, function (&$value, $key) use ($definition) {
48 if ($value instanceof Definition) {
49 $value = $this->resolveDefinition($value, $definition, $key);
50 }
51 });
52
53 return $values;
54 }
55
56 public function isResolvable(Definition $definition, array $parameters = []) : bool
57 {
58 return true;
59 }
60
61 private function resolveDefinition(Definition $value, ArrayDefinition $definition, $key)
62 {
63 try {
64 return $this->definitionResolver->resolve($value);
65 } catch (DependencyException $e) {
66 throw $e;
67 } catch (Exception $e) {
68 throw new DependencyException(sprintf(
69 'Error while resolving %s[%s]. %s',
70 $definition->getName(),
71 $key,
72 $e->getMessage()
73 ), 0, $e);
74 }
75 }
76 }
77