Skip to content

adlogix/zf2-opensoft-rollout

Repository files navigation

Zend Framework 2 Module - Rollout

Build Status Scrutinizer Code Quality Total Downloads License composer.lock Latest Stable Version

A ZF2 Module for opensoft/rollout

Installation

  1. Install the module via composer by running:
composer require adlogix/zf2-opensoft-rollout:~1.0
  1. Add the Adlogix\Zf2Rollout module to the module section of your config/application.config.php

Configuration

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.' 
            ]
        ]
    ],
]

Usage

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.

Describe the features

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');

Zend Developer Toolbar

The module comes with support for the zend developer toolbar.

zf2-adlogix-rollout zend developer tools

⚠️ 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']],
            ],
        ],

    ],
];