A ZF2 Module for opensoft/rollout
- Install the module via composer by running:
composer require adlogix/zf2-opensoft-rollout:~1.0
- Add the
Adlogix\Zf2Rollout
module to the module section of yourconfig/application.config.php
Rollout parameters can be defined in the application configurations:
<?php
return [
'rollout' => [
// Service id to obtain a Opensoft\Rollout\RolloutUserInterface instance
'user_service' => null,
// Service id to obtain a Opensoft\Rollout\Storage\StorageInterface instance
'storage_service' => 'zf2_rollout_storage_array',
// Required configuration if storage service is Adlogix\Zf2Rollout\Storage\ZendDbAdapterStorage
'zend_db_storage' => [
'table_name' => 'rollout_feature'
],
// Required configuration if storage service is Adlogix\Zf2Rollout\Storage\Doctrine\DoctrineORMStorage
'doctrine_storage' => [
'class_name' => SomeFeatureEntity::class
],
// (Optional) Describes the features with a description
'features' => [
'feature_1' => [
'description' => 'The description of the feature.'
]
]
],
]
To retrieve the rollout service from a zend controller:
<?php
$rollout = $this->getServiceLocator()->get('zf2_rollout');
Refer to the documentation of opensoft/rollout for more information on how to use the library.
Since the Rollout library doesn't have (yet) a functionality to describe its feature flags, you can define them through this module. To do so, simply add your feature flag identifier in the 'features' sections of the rollout configuration as shown here:
<?php
return [
'rollout' => [
// (Optional) Describes the features with a description
'features' => [
'feature_1' => [
'description' => ''
]
]
],
];
To display the description in a view you have to call the view helper : rollout_description. If the description is not found in the configuration, an empty string will be returned.
echo $this->rollout_description('feature_1');
The module comes with support for the zend developer toolbar.
An example of enabling the end points with BjyAuthorize:
<?php
// config/autoload/authorization.development.php
use Adlogix\Zf2Rollout\Service\Controller\RolloutController;
return [
'bjyauthorize' => [
'guards' => [
// Add this if you are adding guards on controllers
'BjyAuthorize\Guard\Controller' => [
['controller' => RolloutController::class, 'roles' => ['guest','user']],
],
// Add this if you are adding guards on routes
'BjyAuthorize\Guard\Route' => [
['route' => 'rollout_feature_toggle', 'roles' => ['guest','user']],
],
],
],
];