summaryrefslogtreecommitdiff
path: root/vendor/open-telemetry/sdk/Common/Dev/Compatibility
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2023-10-20 17:12:29 +0300
committerAndrew Dolgov <[email protected]>2023-10-20 21:13:39 +0300
commitcdd7ad020e165fe680703b6d3319b908b682fb7a (patch)
treeb51eb09b7b4587e8fbc5624ac8d88d28cfcd0b04 /vendor/open-telemetry/sdk/Common/Dev/Compatibility
parent45a9ff0c88cbd33892ff16ab837e9059937d656e (diff)
jaeger-client -> opentelemetry
Diffstat (limited to 'vendor/open-telemetry/sdk/Common/Dev/Compatibility')
-rw-r--r--vendor/open-telemetry/sdk/Common/Dev/Compatibility/README.md14
-rw-r--r--vendor/open-telemetry/sdk/Common/Dev/Compatibility/Util.php93
-rw-r--r--vendor/open-telemetry/sdk/Common/Dev/Compatibility/_load.php7
3 files changed, 114 insertions, 0 deletions
diff --git a/vendor/open-telemetry/sdk/Common/Dev/Compatibility/README.md b/vendor/open-telemetry/sdk/Common/Dev/Compatibility/README.md
new file mode 100644
index 000000000..661eed3b8
--- /dev/null
+++ b/vendor/open-telemetry/sdk/Common/Dev/Compatibility/README.md
@@ -0,0 +1,14 @@
+# Backwards Compatibility
+
+We aim to provide backward compatibility (without any guarantee) even for alpha releases, however the library will raise notices indicating breaking changes and what to do about them. \
+If you don't want these notices to appear or change the error message level, you can do so by calling:
+```php
+OpenTelemetry\SDK\Common\Dev\Compatibility\Util::setErrorLevel(0)
+```
+to turn messages off completely, or (for example)
+```php
+OpenTelemetry\SDK\Common\Dev\Compatibility\Util::setErrorLevel(E_USER_DEPRECATED)
+```
+to trigger only deprecation notices. Valid error levels are `0` (none), `E_USER_DEPRECATED`, `E_USER_NOTICE`, `E_USER_WARNING` and `E_USER_ERROR` \
+However (as long as in alpha) it is safer to pin a dependency on the library to a specific version and/or make the adjustments
+mentioned in the provided messages, since doing otherwise may break things completely for you in the future!
diff --git a/vendor/open-telemetry/sdk/Common/Dev/Compatibility/Util.php b/vendor/open-telemetry/sdk/Common/Dev/Compatibility/Util.php
new file mode 100644
index 000000000..1a3debfdd
--- /dev/null
+++ b/vendor/open-telemetry/sdk/Common/Dev/Compatibility/Util.php
@@ -0,0 +1,93 @@
+<?php
+
+declare(strict_types=1);
+
+namespace OpenTelemetry\SDK\Common\Dev\Compatibility;
+
+class Util
+{
+ public const E_NONE = 0;
+ public const DEFAULT_ERROR_LEVEL = E_USER_NOTICE;
+ public const ERROR_LEVELS = [
+ self::E_NONE,
+ E_USER_DEPRECATED,
+ E_USER_NOTICE,
+ E_USER_WARNING,
+ E_USER_ERROR,
+ ];
+
+ private static int $errorLevel = E_USER_NOTICE;
+
+ public static function setErrorLevel(int $errorLevel = E_USER_NOTICE): void
+ {
+ self::validateErrorLevel($errorLevel);
+
+ self::$errorLevel = $errorLevel;
+ }
+
+ public static function getErrorLevel(): int
+ {
+ return self::$errorLevel;
+ }
+
+ /**
+ * @psalm-suppress ArgumentTypeCoercion
+ */
+ public static function triggerClassDeprecationNotice(string $className, string $alternativeClassName = null): void
+ {
+ if (self::getErrorLevel() === self::E_NONE) {
+ return;
+ }
+
+ $notice = sprintf(
+ 'Class "%s" is deprecated and will be removed in a future release. ',
+ $className
+ );
+
+ if ($alternativeClassName !== null) {
+ $notice .= sprintf('Please, use "%s" instead.', $alternativeClassName);
+ }
+
+ trigger_error($notice, self::$errorLevel);
+ }
+
+ /**
+ * @psalm-suppress ArgumentTypeCoercion
+ */
+ public static function triggerMethodDeprecationNotice(
+ string $methodName,
+ string $alternativeMethodName = null,
+ string $alternativeClassName = null
+ ): void {
+ if (self::getErrorLevel() === self::E_NONE) {
+ return;
+ }
+
+ $notice = sprintf(
+ 'Method "%s " is deprecated and will be removed in a future release. ',
+ $methodName
+ );
+
+ if ($alternativeMethodName !== null) {
+ $method = $alternativeClassName === null
+ ? $alternativeMethodName
+ : sprintf('%s::%s', $alternativeClassName, $alternativeMethodName);
+
+ $notice .= sprintf('Please, use "%s" instead.', $method);
+ }
+
+ trigger_error($notice, self::$errorLevel);
+ }
+
+ private static function validateErrorLevel(int $errorLevel): void
+ {
+ if (!in_array($errorLevel, self::ERROR_LEVELS, true)) {
+ throw new \InvalidArgumentException(
+ sprintf(
+ 'Error level must be one of "%s"',
+ implode('", "', self::ERROR_LEVELS)
+ ),
+ );
+ }
+ }
+}
diff --git a/vendor/open-telemetry/sdk/Common/Dev/Compatibility/_load.php b/vendor/open-telemetry/sdk/Common/Dev/Compatibility/_load.php
new file mode 100644
index 000000000..99f86c574
--- /dev/null
+++ b/vendor/open-telemetry/sdk/Common/Dev/Compatibility/_load.php
@@ -0,0 +1,7 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * To add a BC compatibility:
+ * require_once __DIR__ . '/BC/SomeFile.php';
+ */