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

72 lines 1.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 // phpcs:ignoreFile -- Bundled third-party (Mozart) dependency; exempt from plugin coding standards.
3
4 declare(strict_types=1);
5
6 namespace WPDeveloper\BetterDocs\Dependencies\DI\Definition\Resolver;
7
8 use WPDeveloper\BetterDocs\Dependencies\DI\Definition\Definition;
9 use WPDeveloper\BetterDocs\Dependencies\DI\Definition\EnvironmentVariableDefinition;
10 use WPDeveloper\BetterDocs\Dependencies\DI\Definition\Exception\InvalidDefinition;
11
12 /**
13 * Resolves a environment variable definition to a value.
14 *
15 * @author James Harris <james.harris@icecave.com.au>
16 */
17 class EnvironmentVariableResolver implements DefinitionResolver
18 {
19 /**
20 * @var DefinitionResolver
21 */
22 private $definitionResolver;
23
24 /**
25 * @var callable
26 */
27 private $variableReader;
28
29 public function __construct(DefinitionResolver $definitionResolver, $variableReader = 'getenv')
30 {
31 $this->definitionResolver = $definitionResolver;
32 $this->variableReader = $variableReader;
33 }
34
35 /**
36 * Resolve an environment variable definition to a value.
37 *
38 * @param EnvironmentVariableDefinition $definition
39 *
40 * {@inheritdoc}
41 */
42 public function resolve(Definition $definition, array $parameters = [])
43 {
44 $value = call_user_func($this->variableReader, $definition->getVariableName());
45
46 if (false !== $value) {
47 return $value;
48 }
49
50 if (!$definition->isOptional()) {
51 throw new InvalidDefinition(sprintf(
52 "The environment variable '%s' has not been defined",
53 $definition->getVariableName()
54 ));
55 }
56
57 $value = $definition->getDefaultValue();
58
59 // Nested definition
60 if ($value instanceof Definition) {
61 return $this->definitionResolver->resolve($value);
62 }
63
64 return $value;
65 }
66
67 public function isResolvable(Definition $definition, array $parameters = []) : bool
68 {
69 return true;
70 }
71 }
72