bitnetic/maturity

There is no license information available for the latest version (0.1.3) of this package.

A laravel-based software maturity feature flags configuration package

0.1.3 2018-09-13 08:08 UTC

This package is not auto-updated.

Last update: 2024-09-28 10:11:13 UTC


README

Laravel ships with .env files to give you great flexibility over the configuration and behaviour of your application depending on the environment it is running in.

However, specific environments are a more technical aspect, and often this is not the driver for when a functionality should be available or not. Be it local, docker or test - there are a mixture of situations where you would probably not want your software to access a critical 3rd party API, apply strict business rules, store certain data or behave a simpler way than usual.

Using a maturity-based approach, you can bundle that behaviour into a handful of levels and and apply it to the different technical environments you are going to set up.

How to install it

Just pull in the package via composer:

$ composer install bitnetic/maturity "0.1.*"

The maturity package comes with a config file named config/maturity.php. This file is deployed to the central laravel configuration directory using the vendor:publish command:

$ php artisan vendor:publish --tag=config

How to use it

Insert your desired feature flags:

$ vi config/maturity.php

Set your planned environment's maturities, e.g.:

$ echo "MATURITY=DEV" >> .env
$ echo "MATURITY=PROD" >> .env.aws

Check and use feature flags within your business code, e.g.:

if (Maturity::has('PROCESS_CREDIT_CARDS')) {
    // ...
}

or in your DatabaseSeeder.php:

public function run()
{
    $this->call(\Acme\Cars\PlateRuleSeeder::class);

    if (Maturity::has('SEED_DEMO_DATA')) {
        // ...
    }
}