PHP code example of unleash / symfony-client-bundle
1. Go to this page and download the library: Download unleash/symfony-client-bundle library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
unleash / symfony-client-bundle example snippets
use Unleash\Client\Unleash;
class MyService
{
public function __construct(Unleash $unleash)
{
if ($unleash->isEnabled('someFeatureName')) {
// todo
}
}
}
use Unleash\Client\Bundle\Attribute\IsEnabled;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
#[IsEnabled('my_awesome_feature')]
final class MyController
{
#[IsEnabled('another_awesome_feature', Response::HTTP_BAD_REQUEST)]
#[Route('/my-route')]
public function myRoute(): Response
{
// todo
}
#[Route('/other-route')]
public function otherRoute(): Response
{
// todo
}
}
use Unleash\Client\Bundle\Attribute\IsNotEnabled;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
#[IsNotEnabled('kill_switch')]
final class MyHeavyController
{
#[Route('/my-route')]
public function myRoute(): Response
{
// todo
}
}
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Unleash\Client\Bundle\Event\UnleashEvents;
use Unleash\Client\Bundle\Event\BeforeExceptionThrownForAttributeEvent;
use Symfony\Component\HttpFoundation\Response;
final class MySubscriber implements EventSubscriberInterface
{
public static function getSubscribedEvents(): array
{
return [
UnleashEvents::BEFORE_EXCEPTION_THROWN_FOR_ATTRIBUTE => 'handleException',
];
}
public function handleException(BeforeExceptionThrownForAttributeEvent $event): void
{
$statusCode = $event->getErrorCode();
switch ($statusCode) {
case Response::HTTP_NOT_FOUND:
$exception = new CustomException('Custom message');
break;
default:
$exception = null;
}
// the exception can be a Throwable or null, null means that this bundle reverts
// to its own default exceptions
$event->setException($exception);
}
}
use Unleash\Client\Configuration\Context;
use Unleash\Client\Enum\ContextField;
class MyService
{
public function __construct(Context $context)
{
$context->getCurrentUserId();
$context->getSessionId();
$context->getIpAddress();
$context->hasCustomProperty('someProperty');
$context->getCustomProperty('someProperty');
$context->hasMatchingFieldValue('someProperty', ['someValue1', 'someValue2']);
$context->findContextValue(ContextField::USER_ID);
}
}
use Unleash\Client\Bundle\Event\UnleashEvents;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Unleash\Client\Bundle\Event\ContextValueNotFoundEvent;
class MyListener implements EventSubscriberInterface
{
public static function getSubscribedEvents(): array
{
return [
UnleashEvents::CONTEXT_VALUE_NOT_FOUND => 'handleNotFoundContextValue',
];
}
public function handleNotFoundContextValue(ContextValueNotFoundEvent $event)
{
switch ($event->getContextName()) {
case 'myProperty':
$value = '...'; // dynamically create the value
$event->setValue($value);
break;
}
}
}
use Unleash\Client\Strategy\AbstractStrategyHandler;
use Unleash\Client\DTO\Strategy;
use Unleash\Client\Configuration\Context;
class MyCustomStrategy extends AbstractStrategyHandler
{
public function getStrategyName() : string
{
return 'my_custom_strategy';
}
public function isEnabled(Strategy $strategy, Context $context) : bool
{
$someCustomProperty = $this->findParameter('customProperty', $strategy);
if ($someCustomProperty === false) {
return false;
}
// assume it's a list
$someCustomProperty = array_map('trim', explode(',', $someCustomProperty));
$enabled = $context->hasMatchingFieldValue('customProperty', $someCustomProperty);
// check if the constraints are valid using the abstract class' method
if (!$enabled || !$this->validateConstraints($strategy, $context)) {
return false;
}
return true;
}
}
use Unleash\Client\Bootstrap\BootstrapProvider;
final class MyBootstrap implements BootstrapProvider
{
public function getBootstrap() : array|JsonSerializable|Traversable|null{
// TODO: Implement getBootstrap() method.
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.