PluginProbe
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot / 4.5.1
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot v4.5.1
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 / includes / Dependencies / DI / Definition / Resolver / EnvironmentVariableResolver.php

EnvironmentVariableResolver.php in BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot 4.5.1, at includes/Dependencies/DI/Definition/Resolver/EnvironmentVariableResolver.php

71 lines 1.8 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 WPDeveloper\BetterDocs\Dependencies\DI\Definition\Resolver;
6
7 use WPDeveloper\BetterDocs\Dependencies\DI\Definition\Definition;
8 use WPDeveloper\BetterDocs\Dependencies\DI\Definition\EnvironmentVariableDefinition;
9 use WPDeveloper\BetterDocs\Dependencies\DI\Definition\Exception\InvalidDefinition;
10
11 /**
12 * Resolves a environment variable definition to a value.
13 *
14 * @author James Harris <james.harris@icecave.com.au>
15 */
16 class EnvironmentVariableResolver implements DefinitionResolver
17 {
18 /**
19 * @var DefinitionResolver
20 */
21 private $definitionResolver;
22
23 /**
24 * @var callable
25 */
26 private $variableReader;
27
28 public function __construct(DefinitionResolver $definitionResolver, $variableReader = 'getenv')
29 {
30 $this->definitionResolver = $definitionResolver;
31 $this->variableReader = $variableReader;
32 }
33
34 /**
35 * Resolve an environment variable definition to a value.
36 *
37 * @param EnvironmentVariableDefinition $definition
38 *
39 * {@inheritdoc}
40 */
41 public function resolve(Definition $definition, array $parameters = [])
42 {
43 $value = call_user_func($this->variableReader, $definition->getVariableName());
44
45 if (false !== $value) {
46 return $value;
47 }
48
49 if (!$definition->isOptional()) {
50 throw new InvalidDefinition(sprintf(
51 "The environment variable '%s' has not been defined",
52 $definition->getVariableName()
53 ));
54 }
55
56 $value = $definition->getDefaultValue();
57
58 // Nested definition
59 if ($value instanceof Definition) {
60 return $this->definitionResolver->resolve($value);
61 }
62
63 return $value;
64 }
65
66 public function isResolvable(Definition $definition, array $parameters = []) : bool
67 {
68 return true;
69 }
70 }
71