ZF2 module for the Opensoft Rollout library
A ZF2 Module for opensoft/rollout
- Install the module via composer by running:
composer require adlogix/zf2-opensoft-rollout:~1.0
- Add the
Adlogix\Zf2Rolloutmodule to the module section of your
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.
The module comes with support for the zend developer toolbar.
⚠️ The ZDT rollout comes with a quick toggling action, allowing the user to quickly enable/disable a feature by clicking on one of the listed feature elements in the toolbar. Make sure to only authorise these actions in development mode. ⚠️
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']], ], ], ], ];