PluginProbe
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot / 2.5.5
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot v2.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 / functions.php

functions.php in BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot 2.5.5, at includes/Dependencies/DI/functions.php

157 lines 5.2 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;
6
7 use WPDeveloper\BetterDocs\Dependencies\DI\Definition\ArrayDefinitionExtension;
8 use WPDeveloper\BetterDocs\Dependencies\DI\Definition\EnvironmentVariableDefinition;
9 use WPDeveloper\BetterDocs\Dependencies\DI\Definition\Helper\AutowireDefinitionHelper;
10 use WPDeveloper\BetterDocs\Dependencies\DI\Definition\Helper\CreateDefinitionHelper;
11 use WPDeveloper\BetterDocs\Dependencies\DI\Definition\Helper\FactoryDefinitionHelper;
12 use WPDeveloper\BetterDocs\Dependencies\DI\Definition\Reference;
13 use WPDeveloper\BetterDocs\Dependencies\DI\Definition\StringDefinition;
14 use WPDeveloper\BetterDocs\Dependencies\DI\Definition\ValueDefinition;
15
16 if (! function_exists('WPDeveloper\BetterDocs\Dependencies\DI\value')) {
17 /**
18 * Helper for defining a value.
19 *
20 * @param mixed $value
21 */
22 function value($value) : ValueDefinition
23 {
24 return new ValueDefinition($value);
25 }
26 }
27
28 if (! function_exists('WPDeveloper\BetterDocs\Dependencies\DI\create')) {
29 /**
30 * Helper for defining an object.
31 *
32 * @param string|null $className Class name of the object.
33 * If null, the name of the entry (in the container) will be used as class name.
34 */
35 function create(string $className = null) : CreateDefinitionHelper
36 {
37 return new CreateDefinitionHelper($className);
38 }
39 }
40
41 if (! function_exists('WPDeveloper\BetterDocs\Dependencies\DI\autowire')) {
42 /**
43 * Helper for autowiring an object.
44 *
45 * @param string|null $className Class name of the object.
46 * If null, the name of the entry (in the container) will be used as class name.
47 */
48 function autowire(string $className = null) : AutowireDefinitionHelper
49 {
50 return new AutowireDefinitionHelper($className);
51 }
52 }
53
54 if (! function_exists('WPDeveloper\BetterDocs\Dependencies\DI\factory')) {
55 /**
56 * Helper for defining a container entry using a factory function/callable.
57 *
58 * @param callable $factory The factory is a callable that takes the container as parameter
59 * and returns the value to register in the container.
60 */
61 function factory($factory) : FactoryDefinitionHelper
62 {
63 return new FactoryDefinitionHelper($factory);
64 }
65 }
66
67 if (! function_exists('WPDeveloper\BetterDocs\Dependencies\DI\decorate')) {
68 /**
69 * Decorate the previous definition using a callable.
70 *
71 * Example:
72 *
73 * 'foo' => decorate(function ($foo, $container) {
74 * return new CachedFoo($foo, $container->get('cache'));
75 * })
76 *
77 * @param callable $callable The callable takes the decorated object as first parameter and
78 * the container as second.
79 */
80 function decorate($callable) : FactoryDefinitionHelper
81 {
82 return new FactoryDefinitionHelper($callable, true);
83 }
84 }
85
86 if (! function_exists('WPDeveloper\BetterDocs\Dependencies\DI\get')) {
87 /**
88 * Helper for referencing another container entry in an object definition.
89 */
90 function get(string $entryName) : Reference
91 {
92 return new Reference($entryName);
93 }
94 }
95
96 if (! function_exists('WPDeveloper\BetterDocs\Dependencies\DI\env')) {
97 /**
98 * Helper for referencing environment variables.
99 *
100 * @param string $variableName The name of the environment variable.
101 * @param mixed $defaultValue The default value to be used if the environment variable is not defined.
102 */
103 function env(string $variableName, $defaultValue = null) : EnvironmentVariableDefinition
104 {
105 // Only mark as optional if the default value was *explicitly* provided.
106 $isOptional = 2 === func_num_args();
107
108 return new EnvironmentVariableDefinition($variableName, $isOptional, $defaultValue);
109 }
110 }
111
112 if (! function_exists('WPDeveloper\BetterDocs\Dependencies\DI\add')) {
113 /**
114 * Helper for extending another definition.
115 *
116 * Example:
117 *
118 * 'log.backends' => WPDeveloper\BetterDocs\Dependencies\DI\add(WPDeveloper\BetterDocs\Dependencies\DI\get('My\Custom\LogBackend'))
119 *
120 * or:
121 *
122 * 'log.backends' => WPDeveloper\BetterDocs\Dependencies\DI\add([
123 * WPDeveloper\BetterDocs\Dependencies\DI\get('My\Custom\LogBackend')
124 * ])
125 *
126 * @param mixed|array $values A value or an array of values to add to the array.
127 *
128 * @since 5.0
129 */
130 function add($values) : ArrayDefinitionExtension
131 {
132 if (! is_array($values)) {
133 $values = [$values];
134 }
135
136 return new ArrayDefinitionExtension($values);
137 }
138 }
139
140 if (! function_exists('WPDeveloper\BetterDocs\Dependencies\DI\string')) {
141 /**
142 * Helper for concatenating strings.
143 *
144 * Example:
145 *
146 * 'log.filename' => WPDeveloper\BetterDocs\Dependencies\DI\string('{app.path}/app.log')
147 *
148 * @param string $expression A string expression. Use the `{}` placeholders to reference other container entries.
149 *
150 * @since 5.0
151 */
152 function string(string $expression) : StringDefinition
153 {
154 return new StringDefinition($expression);
155 }
156 }
157