The feature toggle library for PHP
Coming soon...
The Toggle
class is the core class. All feature config will set on this object.
Use the fixed result:
<?php
use MilesChou\Toggle\Toggle;
$toggle = new Toggle();
$toggle->create('f1', true);
// Will return true
$toggle->isActive('f1');
Use the object with fixed result:
<?php
use MilesChou\Toggle\Feature;
use MilesChou\Toggle\Toggle;
$toggle = new Toggle();
$toggle->add('f1', Feature::create(true));
// Will return true
$toggle->isActive('f1');
Use callable to decide the return dynamically:
<?php
use MilesChou\Toggle\Toggle;
$toggle = new Toggle();
$toggle->create('f1', function() {
return true;
});
// Will return true
$toggle->isActive('f1');
Use callable with Context:
<?php
use MilesChou\Toggle\Toggle;
$toggle = new Toggle();
$toggle->create('f1', function($context) {
return $context['return'];
});
// Will return true
$toggle->isActive('f1', ['return' => true]);
Feature
instance can store some parameter. For example:
<?php
use MilesChou\Toggle\Toggle;
$toggle = new Toggle();
$toggle->create('f1', true, ['name' => 'Miles']);
$toggle->create('f2', false, ['name' => 'Chou']);
// Will return 'Chou'
$toggle->feature('f1')->params('name');
// Also using in callback
$toggle->create('f3', function($context, array $params) {
return $params['key'] === $context['key'];
}, ['key' => 'foo']);
This snippet is like if
/ switch
structure:
<?php
use MilesChou\Toggle\Toggle;
$toggle = new Toggle();
$toggle->create('f1');
$toggle->create('f2');
$toggle->create('f3');
$toggle
->when('f1', function ($context, $params) {
// Something when f1 is on
})
->when('f2', function ($context, $params) {
// Something when f2 is on
})
->when('f3', function ($context, $params) {
// Something when f3 is on
});
Refer the Toggle Processor Project.