summaryrefslogtreecommitdiff
path: root/vendor/open-telemetry/api/Instrumentation/ConfigurationResolver.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/open-telemetry/api/Instrumentation/ConfigurationResolver.php')
-rw-r--r--vendor/open-telemetry/api/Instrumentation/ConfigurationResolver.php77
1 files changed, 77 insertions, 0 deletions
diff --git a/vendor/open-telemetry/api/Instrumentation/ConfigurationResolver.php b/vendor/open-telemetry/api/Instrumentation/ConfigurationResolver.php
new file mode 100644
index 000000000..bb5619c30
--- /dev/null
+++ b/vendor/open-telemetry/api/Instrumentation/ConfigurationResolver.php
@@ -0,0 +1,77 @@
+<?php
+
+declare(strict_types=1);
+
+namespace OpenTelemetry\API\Instrumentation;
+
+class ConfigurationResolver implements ConfigurationResolverInterface
+{
+ public function has(string $name): bool
+ {
+ return $this->getVariable($name) !== null;
+ }
+
+ public function getString(string $name): ?string
+ {
+ return $this->getVariable($name);
+ }
+
+ public function getBoolean(string $name): ?bool
+ {
+ $value = $this->getVariable($name);
+ if ($value === null) {
+ return null;
+ }
+
+ return ($value === 'true');
+ }
+
+ public function getInt(string $name): ?int
+ {
+ $value = $this->getVariable($name);
+ if ($value === null) {
+ return null;
+ }
+ if (filter_var($value, FILTER_VALIDATE_INT) === false) {
+ //log warning
+ return null;
+ }
+
+ return (int) $value;
+ }
+
+ public function getList(string $name): array
+ {
+ $value = $this->getVariable($name);
+ if ($value === null) {
+ return [];
+ }
+
+ return explode(',', $value);
+ }
+
+ private function getVariable(string $name): ?string
+ {
+ $value = $_SERVER[$name] ?? null;
+ if ($value !== false && !self::isEmpty($value)) {
+ assert(is_string($value));
+
+ return $value;
+ }
+ $value = getenv($name);
+ if ($value !== false && !self::isEmpty($value)) {
+ return $value;
+ }
+ $value = ini_get($name);
+ if ($value !== false && !self::isEmpty($value)) {
+ return $value;
+ }
+
+ return null;
+ }
+
+ private static function isEmpty($value): bool
+ {
+ return $value === false || $value === null || $value === '';
+ }
+}