From 6e6b109e570ddbebbfef9cb7260256060a2cfc7d Mon Sep 17 00:00:00 2001 From: Tom Carrio Date: Tue, 27 Dec 2022 21:11:01 -0500 Subject: [PATCH 01/11] feat(otel-hook): autoload registration of otel hook Signed-off-by: Tom Carrio --- hooks/OpenTelemetry/composer.json | 5 ++++- hooks/OpenTelemetry/src/_autoload.php | 4 ++++ 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 hooks/OpenTelemetry/src/_autoload.php diff --git a/hooks/OpenTelemetry/composer.json b/hooks/OpenTelemetry/composer.json index 456d2aa8..d5c3dc0a 100644 --- a/hooks/OpenTelemetry/composer.json +++ b/hooks/OpenTelemetry/composer.json @@ -54,7 +54,10 @@ "autoload": { "psr-4": { "OpenFeature\\Hooks\\OpenTelemetry\\": "src" - } + }, + "files": [ + "src/_autoload.php" + ] }, "autoload-dev": { "psr-4": { diff --git a/hooks/OpenTelemetry/src/_autoload.php b/hooks/OpenTelemetry/src/_autoload.php new file mode 100644 index 00000000..2ca4dae7 --- /dev/null +++ b/hooks/OpenTelemetry/src/_autoload.php @@ -0,0 +1,4 @@ + Date: Tue, 27 Dec 2022 21:27:15 -0500 Subject: [PATCH 02/11] test: implement tests and ensure correct handling of global hook state Signed-off-by: Tom Carrio --- hooks/OpenTelemetry/composer.json | 2 +- hooks/OpenTelemetry/src/OpenTelemetryHook.php | 19 ++++++++++++++++++- hooks/OpenTelemetry/src/_autoload.php | 4 +++- .../integration/OpenTelemetryHookTest.php | 16 ++++++++++++++++ 4 files changed, 38 insertions(+), 3 deletions(-) diff --git a/hooks/OpenTelemetry/composer.json b/hooks/OpenTelemetry/composer.json index d5c3dc0a..a373b910 100644 --- a/hooks/OpenTelemetry/composer.json +++ b/hooks/OpenTelemetry/composer.json @@ -112,7 +112,7 @@ "dev:test:unit:teardown": "echo 'Tore down for unit tests...'", "dev:test:integration": [ "@dev:test:integration:setup", - "echo 'No integration tests to run'", + "phpunit --colors=always --testdox --testsuite=integration", "@dev:test:integration:teardown" ], "dev:test:integration:debug": "phpunit --colors=always --testdox -d xdebug.profiler_enable=on", diff --git a/hooks/OpenTelemetry/src/OpenTelemetryHook.php b/hooks/OpenTelemetry/src/OpenTelemetryHook.php index 2f215522..790a6c55 100644 --- a/hooks/OpenTelemetry/src/OpenTelemetryHook.php +++ b/hooks/OpenTelemetry/src/OpenTelemetryHook.php @@ -42,7 +42,7 @@ public static function register(): void self::$instance = new OpenTelemetryHook(); } - if (self::$registeredHook) { + if (self::$registeredHook && self::isRegisteredInHooks()) { return; } @@ -88,4 +88,21 @@ public function supportsFlagValueType(string $flagValueType): bool { return true; } + + /** + * Hooks can be cleared by other means so we can't simply memoize whether a registration has occurred + * + * However if no registration has yet happened then we can absolutely determine that the hook will + * not be registered yet. + */ + private static function isRegisteredInHooks(): bool + { + foreach (OpenFeatureAPI::getInstance()->getHooks() as $hook) { + if ($hook instanceof OpenTelemetryHook) { + return true; + } + } + + return false; + } } diff --git a/hooks/OpenTelemetry/src/_autoload.php b/hooks/OpenTelemetry/src/_autoload.php index 2ca4dae7..69fb8174 100644 --- a/hooks/OpenTelemetry/src/_autoload.php +++ b/hooks/OpenTelemetry/src/_autoload.php @@ -1,4 +1,6 @@ clearHooks(); + + // When + // simulates the composer autoload + require_once __DIR__ . '/../../src/_autoload.php'; + + // Then + $this->assertNotEmpty($api->getHooks()); + $this->assertInstanceOf(Hook::class, $api->getHooks()[0]); + } + public function testCanBeRegistered(): void { // Given $api = OpenFeatureAPI::getInstance(); + $api->clearHooks(); // When OpenTelemetryHook::register(); From a95d7fce072ef7c28fa05dad8d064fe61c2195f1 Mon Sep 17 00:00:00 2001 From: Tom Carrio Date: Tue, 27 Dec 2022 21:28:37 -0500 Subject: [PATCH 03/11] refactor: simulate autoload via self-documenting method call Signed-off-by: Tom Carrio --- .../tests/integration/OpenTelemetryHookTest.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/hooks/OpenTelemetry/tests/integration/OpenTelemetryHookTest.php b/hooks/OpenTelemetry/tests/integration/OpenTelemetryHookTest.php index 995881a2..792f52aa 100644 --- a/hooks/OpenTelemetry/tests/integration/OpenTelemetryHookTest.php +++ b/hooks/OpenTelemetry/tests/integration/OpenTelemetryHookTest.php @@ -18,8 +18,7 @@ public function testIsRegisteredAutomatically(): void $api->clearHooks(); // When - // simulates the composer autoload - require_once __DIR__ . '/../../src/_autoload.php'; + $this->simulateAutoload(); // Then $this->assertNotEmpty($api->getHooks()); @@ -39,4 +38,9 @@ public function testCanBeRegistered(): void $this->assertNotEmpty($api->getHooks()); $this->assertInstanceOf(Hook::class, $api->getHooks()[0]); } + + private function simulateAutoload(): void + { + require_once __DIR__ . '/../../src/_autoload.php'; + } } From cd55ec674e084073c86eb494e9dbc7589c33ac95 Mon Sep 17 00:00:00 2001 From: Tom Carrio Date: Tue, 27 Dec 2022 21:33:46 -0500 Subject: [PATCH 04/11] test: update to support 7.4+ Signed-off-by: Tom Carrio --- .../tests/integration/OpenTelemetryHookTest.php | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/hooks/OpenTelemetry/tests/integration/OpenTelemetryHookTest.php b/hooks/OpenTelemetry/tests/integration/OpenTelemetryHookTest.php index 792f52aa..5aad23df 100644 --- a/hooks/OpenTelemetry/tests/integration/OpenTelemetryHookTest.php +++ b/hooks/OpenTelemetry/tests/integration/OpenTelemetryHookTest.php @@ -9,6 +9,9 @@ use OpenFeature\OpenFeatureAPI; use OpenFeature\interfaces\hooks\Hook; +use function phpversion; +use function preg_match; + class OpenTelemetryHookTest extends TestCase { public function testIsRegisteredAutomatically(): void @@ -21,7 +24,8 @@ public function testIsRegisteredAutomatically(): void $this->simulateAutoload(); // Then - $this->assertNotEmpty($api->getHooks()); + + $this->assertCount($this->isAutoloadSupported() ? 1 : 0, $api->getHooks()); $this->assertInstanceOf(Hook::class, $api->getHooks()[0]); } @@ -43,4 +47,15 @@ private function simulateAutoload(): void { require_once __DIR__ . '/../../src/_autoload.php'; } + + private function isAutoloadSupported(): bool + { + $version = phpversion(); + + if (!$version) { + return false; + } + + return preg_match('/8\..+/', $version) === 1; + } } From ffccabf69b7e7b2aa3f1f47cae218e08ff4e2c7b Mon Sep 17 00:00:00 2001 From: Tom Carrio Date: Tue, 27 Dec 2022 21:34:59 -0500 Subject: [PATCH 05/11] docs: info on autoloading in readme Signed-off-by: Tom Carrio --- hooks/OpenTelemetry/README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/hooks/OpenTelemetry/README.md b/hooks/OpenTelemetry/README.md index 67f80885..727e4b2b 100644 --- a/hooks/OpenTelemetry/README.md +++ b/hooks/OpenTelemetry/README.md @@ -12,6 +12,10 @@ OpenTelemetry is an open specification for distributed tracing, metrics, and log This package also builds on various PSRs (PHP Standards Recommendations) such as the Logger interfaces (PSR-3) and the Basic and Extended Coding Standards (PSR-1 and PSR-12). +### Autoloading + +For version of PHP 8 and higher, this package supports Composer autoloading. Thus, simply installing the package is all you need in order to immediately get started with OpenTracing for OpenFeature! + ### OpenTelemetry Package Status The OpenTelemetry package for PHP is still in beta, so there could be changes required. However, it exposes global primitives for span retrieval that should not require any configuration upfront for the provider to just work. From f71d5064c963b7b98571fdf6841860cd201b82cc Mon Sep 17 00:00:00 2001 From: Tom Carrio Date: Tue, 27 Dec 2022 21:38:09 -0500 Subject: [PATCH 06/11] test: always require in test case Signed-off-by: Tom Carrio --- hooks/OpenTelemetry/tests/integration/OpenTelemetryHookTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hooks/OpenTelemetry/tests/integration/OpenTelemetryHookTest.php b/hooks/OpenTelemetry/tests/integration/OpenTelemetryHookTest.php index 5aad23df..4b0f4bd3 100644 --- a/hooks/OpenTelemetry/tests/integration/OpenTelemetryHookTest.php +++ b/hooks/OpenTelemetry/tests/integration/OpenTelemetryHookTest.php @@ -45,7 +45,7 @@ public function testCanBeRegistered(): void private function simulateAutoload(): void { - require_once __DIR__ . '/../../src/_autoload.php'; + require __DIR__ . '/../../src/_autoload.php'; } private function isAutoloadSupported(): bool From fff812d1c33f62c43322467a061dfacbaf9470d8 Mon Sep 17 00:00:00 2001 From: Tom Carrio Date: Tue, 27 Dec 2022 21:41:06 -0500 Subject: [PATCH 07/11] test: always assert size 1 Signed-off-by: Tom Carrio --- .../tests/integration/OpenTelemetryHookTest.php | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/hooks/OpenTelemetry/tests/integration/OpenTelemetryHookTest.php b/hooks/OpenTelemetry/tests/integration/OpenTelemetryHookTest.php index 4b0f4bd3..5bff7d5a 100644 --- a/hooks/OpenTelemetry/tests/integration/OpenTelemetryHookTest.php +++ b/hooks/OpenTelemetry/tests/integration/OpenTelemetryHookTest.php @@ -25,7 +25,7 @@ public function testIsRegisteredAutomatically(): void // Then - $this->assertCount($this->isAutoloadSupported() ? 1 : 0, $api->getHooks()); + $this->assertCount(1, $api->getHooks()); $this->assertInstanceOf(Hook::class, $api->getHooks()[0]); } @@ -39,7 +39,7 @@ public function testCanBeRegistered(): void OpenTelemetryHook::register(); // Then - $this->assertNotEmpty($api->getHooks()); + $this->assertCount(1, $api->getHooks()); $this->assertInstanceOf(Hook::class, $api->getHooks()[0]); } @@ -47,15 +47,4 @@ private function simulateAutoload(): void { require __DIR__ . '/../../src/_autoload.php'; } - - private function isAutoloadSupported(): bool - { - $version = phpversion(); - - if (!$version) { - return false; - } - - return preg_match('/8\..+/', $version) === 1; - } } From d221007f76812bec7d4f0d99401a1c76d0c355f8 Mon Sep 17 00:00:00 2001 From: Tom Carrio Date: Tue, 27 Dec 2022 21:55:31 -0500 Subject: [PATCH 08/11] fix: unused imports Signed-off-by: Tom Carrio --- .../OpenTelemetry/tests/integration/OpenTelemetryHookTest.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/hooks/OpenTelemetry/tests/integration/OpenTelemetryHookTest.php b/hooks/OpenTelemetry/tests/integration/OpenTelemetryHookTest.php index 5bff7d5a..0e2bb7a2 100644 --- a/hooks/OpenTelemetry/tests/integration/OpenTelemetryHookTest.php +++ b/hooks/OpenTelemetry/tests/integration/OpenTelemetryHookTest.php @@ -9,9 +9,6 @@ use OpenFeature\OpenFeatureAPI; use OpenFeature\interfaces\hooks\Hook; -use function phpversion; -use function preg_match; - class OpenTelemetryHookTest extends TestCase { public function testIsRegisteredAutomatically(): void From 2945355906311812c509062bb82b0567c70c51fd Mon Sep 17 00:00:00 2001 From: Tom Carrio Date: Tue, 27 Dec 2022 22:01:37 -0500 Subject: [PATCH 09/11] refactor: rename test case for autoloading Signed-off-by: Tom Carrio --- hooks/OpenTelemetry/tests/integration/OpenTelemetryHookTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hooks/OpenTelemetry/tests/integration/OpenTelemetryHookTest.php b/hooks/OpenTelemetry/tests/integration/OpenTelemetryHookTest.php index 0e2bb7a2..fb3a3a9c 100644 --- a/hooks/OpenTelemetry/tests/integration/OpenTelemetryHookTest.php +++ b/hooks/OpenTelemetry/tests/integration/OpenTelemetryHookTest.php @@ -11,7 +11,7 @@ class OpenTelemetryHookTest extends TestCase { - public function testIsRegisteredAutomatically(): void + public function testAutoload(): void { // Given $api = OpenFeatureAPI::getInstance(); From bbb1cf00e05b533a0ab58fa5487eaa96372a43a2 Mon Sep 17 00:00:00 2001 From: Tom Carrio Date: Tue, 27 Dec 2022 22:11:33 -0500 Subject: [PATCH 10/11] docs: update all examples and include autoinstrument example Signed-off-by: Tom Carrio --- hooks/OpenTelemetry/README.md | 4 ++- .../examples/AutoloadOTelSDK/README.md | 5 ++++ .../examples/AutoloadOTelSDK/composer.json | 16 ++++++++++++ .../examples/AutoloadOTelSDK/src/main.php | 25 +++++++++++++++++++ .../OTelManualInstrumentation/README.md | 2 ++ .../OTelManualInstrumentation/composer.json | 5 ---- .../OTelManualInstrumentation/src/main.php | 2 +- 7 files changed, 52 insertions(+), 7 deletions(-) create mode 100644 hooks/OpenTelemetry/examples/AutoloadOTelSDK/README.md create mode 100644 hooks/OpenTelemetry/examples/AutoloadOTelSDK/composer.json create mode 100644 hooks/OpenTelemetry/examples/AutoloadOTelSDK/src/main.php diff --git a/hooks/OpenTelemetry/README.md b/hooks/OpenTelemetry/README.md index 727e4b2b..ee320e9a 100644 --- a/hooks/OpenTelemetry/README.md +++ b/hooks/OpenTelemetry/README.md @@ -14,7 +14,7 @@ This package also builds on various PSRs (PHP Standards Recommendations) such as ### Autoloading -For version of PHP 8 and higher, this package supports Composer autoloading. Thus, simply installing the package is all you need in order to immediately get started with OpenTracing for OpenFeature! +This package supports Composer autoloading. Thus, simply installing the package is all you need in order to immediately get started with OpenTracing for OpenFeature! Examples are provided that showcase the simple setup as well. Check out the Usage section for more info. ### OpenTelemetry Package Status @@ -41,6 +41,8 @@ OpenTelemetryHook::register(); For more information on OpenTelemetry, check out [their documentation](https://opentelemetry.io/docs/instrumentation/php/). +For more examples, see the [examples](./examples/). + ## Development ### PHP Versioning diff --git a/hooks/OpenTelemetry/examples/AutoloadOTelSDK/README.md b/hooks/OpenTelemetry/examples/AutoloadOTelSDK/README.md new file mode 100644 index 00000000..6162d7f2 --- /dev/null +++ b/hooks/OpenTelemetry/examples/AutoloadOTelSDK/README.md @@ -0,0 +1,5 @@ +# OpenFeature OpenTelemetry Hook example + +This example provides an example of bootstrapping and using the OpenTelemetry hook for OpenFeature. + +It showcases the auto-instrumentation functionality of OpenFeature and OpenTelemetry, neither of which requiring imperative interactions with OTel to bootstrap, configure, and utilize it. diff --git a/hooks/OpenTelemetry/examples/AutoloadOTelSDK/composer.json b/hooks/OpenTelemetry/examples/AutoloadOTelSDK/composer.json new file mode 100644 index 00000000..35bb93dd --- /dev/null +++ b/hooks/OpenTelemetry/examples/AutoloadOTelSDK/composer.json @@ -0,0 +1,16 @@ +{ + "name": "open-feature/otel-manual-instrumentation-example", + "description": "An example of using the OpenTelemetry hook for OpenFeature with manual instrumentation", + "type": "project", + "license": "Apache-2.0", + "authors": [ + { + "name": "Tom Carrio", + "email": "tom@carrio.dev" + } + ], + "require": { + "open-telemetry/api": "0.0.17", + "open-feature/sdk": "^1.1" + } +} diff --git a/hooks/OpenTelemetry/examples/AutoloadOTelSDK/src/main.php b/hooks/OpenTelemetry/examples/AutoloadOTelSDK/src/main.php new file mode 100644 index 00000000..a15aa1a3 --- /dev/null +++ b/hooks/OpenTelemetry/examples/AutoloadOTelSDK/src/main.php @@ -0,0 +1,25 @@ +getClient('dev.openfeature.contrib.php.demo', '1.0.0'); + +$version = $client->getStringValue('dev.openfeature.contrib.php.version-value', 'unknown'); + +echo 'Version is ' . $version; \ No newline at end of file diff --git a/hooks/OpenTelemetry/examples/OTelManualInstrumentation/README.md b/hooks/OpenTelemetry/examples/OTelManualInstrumentation/README.md index 9e88acd4..b4cfaad7 100644 --- a/hooks/OpenTelemetry/examples/OTelManualInstrumentation/README.md +++ b/hooks/OpenTelemetry/examples/OTelManualInstrumentation/README.md @@ -1,3 +1,5 @@ # OpenFeature OpenTelemetry Hook example This example provides an example of bootstrapping and using the OpenTelemetry hook for OpenFeature. + +It showcases how you can manually configure the OTel SDK for metrics, tracing, and more. This is then utilized under the hood by OpenFeature within its hook lifecycles to report the feature flag semantic events via the tracer. \ No newline at end of file diff --git a/hooks/OpenTelemetry/examples/OTelManualInstrumentation/composer.json b/hooks/OpenTelemetry/examples/OTelManualInstrumentation/composer.json index d0b77990..e8430659 100644 --- a/hooks/OpenTelemetry/examples/OTelManualInstrumentation/composer.json +++ b/hooks/OpenTelemetry/examples/OTelManualInstrumentation/composer.json @@ -3,11 +3,6 @@ "description": "An example of using the OpenTelemetry hook for OpenFeature with manual instrumentation", "type": "project", "license": "Apache-2.0", - "autoload": { - "psr-4": { - "OpenFeature\\Providers\\Examples\\OTelManualInstrumentation\\": "src/" - } - }, "authors": [ { "name": "Tom Carrio", diff --git a/hooks/OpenTelemetry/examples/OTelManualInstrumentation/src/main.php b/hooks/OpenTelemetry/examples/OTelManualInstrumentation/src/main.php index 2be1d732..59ecf457 100644 --- a/hooks/OpenTelemetry/examples/OTelManualInstrumentation/src/main.php +++ b/hooks/OpenTelemetry/examples/OTelManualInstrumentation/src/main.php @@ -32,7 +32,7 @@ use Psr\Http\Server\RequestHandlerInterface as RequestHandler; use Slim\Routing\RouteContext; -// Registering the OTel hook requires only the following! +// Manually registering the OTel hook requires only the following! // The rest of the work is simply using OpenFeature as you normally would // The current context span will be used to emit trace events. OpenTelemetryHook::register(); From d550c7cba1cd87ca11188f547ad2c237f8b6ec51 Mon Sep 17 00:00:00 2001 From: Tom Carrio Date: Tue, 27 Dec 2022 22:18:23 -0500 Subject: [PATCH 11/11] chore: update all open-feature/sdk to 1.2.0 (latest) Signed-off-by: Tom Carrio --- hooks/OpenTelemetry/composer.json | 2 +- hooks/OpenTelemetry/examples/AutoloadOTelSDK/composer.json | 2 +- .../examples/OTelManualInstrumentation/composer.json | 2 +- providers/CloudBees/composer.json | 2 +- providers/CloudBees/examples/CloudBees/composer.json | 2 +- providers/Flagd/examples/Grpc/composer.json | 2 +- providers/Flagd/examples/Http/composer.json | 2 +- providers/Split/composer.json | 2 +- providers/Split/examples/SplitSDK/composer.json | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/hooks/OpenTelemetry/composer.json b/hooks/OpenTelemetry/composer.json index a373b910..70a3d219 100644 --- a/hooks/OpenTelemetry/composer.json +++ b/hooks/OpenTelemetry/composer.json @@ -23,7 +23,7 @@ ], "require": { "php": "^7.4 || ^8", - "open-feature/sdk": "^1.1.0", + "open-feature/sdk": "^1.2.0", "open-telemetry/api": "^0.0.17" }, "require-dev": { diff --git a/hooks/OpenTelemetry/examples/AutoloadOTelSDK/composer.json b/hooks/OpenTelemetry/examples/AutoloadOTelSDK/composer.json index 35bb93dd..f2116e92 100644 --- a/hooks/OpenTelemetry/examples/AutoloadOTelSDK/composer.json +++ b/hooks/OpenTelemetry/examples/AutoloadOTelSDK/composer.json @@ -11,6 +11,6 @@ ], "require": { "open-telemetry/api": "0.0.17", - "open-feature/sdk": "^1.1" + "open-feature/sdk": "^1.2.0" } } diff --git a/hooks/OpenTelemetry/examples/OTelManualInstrumentation/composer.json b/hooks/OpenTelemetry/examples/OTelManualInstrumentation/composer.json index e8430659..b1121bbb 100644 --- a/hooks/OpenTelemetry/examples/OTelManualInstrumentation/composer.json +++ b/hooks/OpenTelemetry/examples/OTelManualInstrumentation/composer.json @@ -17,6 +17,6 @@ "php-di/slim-bridge": "^3.2", "open-telemetry/api": "0.0.17", "open-telemetry/sdk": "0.0.17", - "open-feature/sdk": "^1.1" + "open-feature/sdk": "^1.2.0" } } diff --git a/providers/CloudBees/composer.json b/providers/CloudBees/composer.json index a3f3c6d8..2a306099 100644 --- a/providers/CloudBees/composer.json +++ b/providers/CloudBees/composer.json @@ -24,7 +24,7 @@ ], "require": { "php": "^7.4 || ^8", - "open-feature/sdk": "^1.0.0", + "open-feature/sdk": "^1.2.0", "rollout/rox": "^5.0" }, "require-dev": { diff --git a/providers/CloudBees/examples/CloudBees/composer.json b/providers/CloudBees/examples/CloudBees/composer.json index 9d2e626d..7ff5ca9e 100644 --- a/providers/CloudBees/examples/CloudBees/composer.json +++ b/providers/CloudBees/examples/CloudBees/composer.json @@ -15,7 +15,7 @@ } ], "require": { - "open-feature/sdk": "^0.0.5", + "open-feature/sdk": "^1.2.0", "open-feature/cloudbees-provider": "^0.0.1" } } diff --git a/providers/Flagd/examples/Grpc/composer.json b/providers/Flagd/examples/Grpc/composer.json index fea77ede..15466ff5 100644 --- a/providers/Flagd/examples/Grpc/composer.json +++ b/providers/Flagd/examples/Grpc/composer.json @@ -15,7 +15,7 @@ } ], "require": { - "open-feature/sdk": "^0.0.5", + "open-feature/sdk": "^1.2.0", "monolog/monolog": "^2.8" } } diff --git a/providers/Flagd/examples/Http/composer.json b/providers/Flagd/examples/Http/composer.json index 767fed55..317e70d5 100644 --- a/providers/Flagd/examples/Http/composer.json +++ b/providers/Flagd/examples/Http/composer.json @@ -15,6 +15,6 @@ } ], "require": { - "open-feature/sdk": "^0.0.5" + "open-feature/sdk": "^1.2.0" } } diff --git a/providers/Split/composer.json b/providers/Split/composer.json index 3eee1b7f..c0083d01 100644 --- a/providers/Split/composer.json +++ b/providers/Split/composer.json @@ -23,7 +23,7 @@ ], "require": { "php": "^7.4 || ^8", - "open-feature/sdk": "^1.1.0", + "open-feature/sdk": "^1.2.0", "splitsoftware/split-sdk-php": "^7.1" }, "require-dev": { diff --git a/providers/Split/examples/SplitSDK/composer.json b/providers/Split/examples/SplitSDK/composer.json index d5a1f317..8fdcef70 100644 --- a/providers/Split/examples/SplitSDK/composer.json +++ b/providers/Split/examples/SplitSDK/composer.json @@ -15,7 +15,7 @@ } ], "require": { - "open-feature/sdk": "^0.0.5", + "open-feature/sdk": "^1.2.0", "open-feature/split-provider": "^0.0.1" } }