open-feature / validators-hook
A validator hooks package for OpenFeature
Requires
- php: ^8
- open-feature/sdk: ^2.0
Requires (Dev)
- ergebnis/composer-normalize: ^2.25
- friendsofphp/php-cs-fixer: ^3.13
- hamcrest/hamcrest-php: ^2.0
- mdwheele/zalgo: ^0.3.1
- mikey179/vfsstream: v1.6.11
- mockery/mockery: ^1.5
- phan/phan: ^5.4
- php-parallel-lint/php-console-highlighter: ^1.0
- php-parallel-lint/php-parallel-lint: ^1.3
- phpstan/extension-installer: ^1.1
- phpstan/phpstan: ~1.10.0
- phpstan/phpstan-mockery: ^1.0
- phpstan/phpstan-phpunit: ^1.1
- psalm/plugin-mockery: ^0.9.1
- psalm/plugin-phpunit: ^0.18.0
- ramsey/coding-standard: ^2.0.3
- ramsey/composer-repl: ^1.4
- ramsey/conventional-commits: ^1.3
- roave/security-advisories: dev-latest
- spatie/phpunit-snapshot-assertions: ^4.2
- vimeo/psalm: ~4.30.0
README
Overview
Validator Hook constructs that provide means to execute validation against resolved feature flag values.
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).
Installation
composer require open-feature/validators-hook
Usage
The following validator hook constructs are available, but more are being worked on over time:
RegexpValidatorHook
use OpenFeature\Hooks\Validators\RegexpValidatorHook; $alphanumericValidator = new RegexpValidatorHook('/^[A-Za-z0-9]+$/'); $hexadecimalValidator = new RegexpValidatorHook('/^[0-9a-f]+$/'); $asciiValidator = new RegexpValidatorHook('/^[ -~]$/'); // this specific invocation will use this validator $client->resolveStringValue('test-flag', 'deadbeef', null, new EvaluationOptions([$hexadecimalValidator]));
For more examples, see the examples.
Development
PHP Versioning
This library targets PHP version 8.0 and newer. As long as you have any compatible version of PHP on your system you should be able to utilize the OpenFeature SDK.
This package also has a .tool-versions
file for use with PHP version managers like asdf
.
Installation and Dependencies
Install dependencies with composer install
. composer install
will update the composer.lock
with the most recent compatible versions.
We value having as few runtime dependencies as possible. The addition of any dependencies requires careful consideration and review.
Testing
Run tests with composer run test
.