Download the PHP package bitnetic/maturity without Composer
On this page you can find all versions of the php package bitnetic/maturity. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download bitnetic/maturity
More information about bitnetic/maturity
Files in bitnetic/maturity
Package maturity
Short Description A laravel-based software maturity feature flags configuration package
License
Informations about the package maturity
A simple software maturity feature flag configuration package for Laravel 5.5/5.6
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')) {
// ...
}
}