<?php

/**
 * @copyright 2ndInterface 2014 - Robin Breuker
 */
require 'vendor/autoload.php';
require 'User.php';
use Doctrine\Common\Cache\ArrayCache;
use Niborb\FeatureToggle\Cache\CacheProxy;
use Niborb\FeatureToggle\Entity\Feature;
use Niborb\FeatureToggle\Toggle;
use Symfony\Component\ExpressionLanguage\ExpressionLanguage;
$toggle = new Toggle();
$toggle->setExpressionLanguage(new ExpressionLanguage(new CacheProxy(new ArrayCache())));
// new user interface only available for users with an ID in range (1000-2000)
$feature = new Feature('user-interface-2.0');
$feature->enable();
$feature->setExpression('user.getId() in 1000..2000');
// add feature to the toggle manager
$toggle->addFeature($feature);
// some users as context
$userOne = new User(3000);
$userTwo = new User(1500);
// check for both users if the feature is enabled
foreach ([$userOne, $userTwo] as $user) {
    if ($toggle->isEnabled('user-interface-2.0', ['user' => $user])) {
        echo "User " . $user->getId() . " can see new interface" . PHP_EOL;
    } else {
        echo "User " . $user->getId() . " cannot(!) see new interface" . PHP_EOL;
    }
}
<?php

/**
 * @copyright 2ndInterface 2014 - Robin Breuker
 */
require 'vendor/autoload.php';
use Niborb\FeatureToggle\Entity\Feature;
use Niborb\FeatureToggle\Toggle;
$toggle = new Toggle();
$feature = new Feature('user-interface-2.0');
$feature->enable();
// add feature to the toggle manager
$toggle->addFeature($feature);
if ($toggle->isEnabled('user-interface-2.0')) {
    echo "Can see new interface" . PHP_EOL;
} else {
    echo "Cannot(!) see new interface" . PHP_EOL;
}
Esempio n. 3
0
 function it_should_integrate_with_expression_language_with_context()
 {
     $expressionLanguage = new ExpressionLanguage();
     $this->setExpressionLanguage($expressionLanguage);
     $feature = new Feature('feature-name');
     $feature->disable();
     $feature->setExpression('n > 0');
     $this->addFeature($feature);
     $this->isEnabled('feature-name')->shouldReturn(false);
     $feature->enable();
     // exception should be thrown, since the expression requires
     // a context to know what 'n' in the expression n > 0 is
     $this->shouldThrow('\\RuntimeException')->duringIsEnabled('feature-name');
     $this->isEnabled('feature-name', ['n' => 1])->shouldReturn(true);
     $this->isEnabled('feature-name', ['n' => -1])->shouldReturn(false);
     $feature->disable();
     $this->isEnabled('feature-name', ['n' => -1])->shouldReturn(false);
 }