Skip to content
This repository was archived by the owner on Jun 23, 2025. It is now read-only.

mikefrancis/laravel-unleash

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

30 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Laravel Unleash

Codacy Badge Packagist Build Status codecov

An Unleash client for Laravel.

Installation

composer require mikefrancis/laravel-unleash

Export package config:

php artisan vendor:publish --provider="MikeFrancis\LaravelUnleash\ServiceProvider"

Configuration

Documentation for configuration can be found in config/unleash.php.

Usage

use \MikeFrancis\LaravelUnleash\Unleash; $unleash = app(Unleash::class); if ($unleash->isFeatureEnabled('myAwesomeFeature')) { // Congratulations, you can see this awesome feature! } if ($unleash->isFeatureDisabled('myAwesomeFeature')) { // Check back later for more features! } $feature = $unleash->getFeature('myAwesomeFeature'); $allFeatures = $unleash->getFeatures();

Facades

You can use the Unleash facade:

use Unleash; if (Unleash::isFeatureEnabled('myAwesomeFeature')) { // Congratulations, you can see this awesome feature! } if (Unleash::isFeatureDisabled('myAwesomeFeature')) { // Check back later for more features! } $feature = Unleash::getFeature('myAwesomeFeature'); $allFeatures = Unleash::getFeatures();

or use the generically named Feature facade:

use Feature; if (Feature::enabled('myAwesomeFeature')) { // Congratulations, you can see this awesome feature! } if (Feature::disabled('myAwesomeFeature')) { // Check back later for more features! } $feature = Feature::get('myAwesomeFeature'); $allFeatures = Feature::all();

Dynamic Arguments

If your strategy relies on dynamic data at runtime, you can pass additional arguments to the feature check functions:

use \MikeFrancis\LaravelUnleash\Unleash; use Config; $unleash = app(Unleash::class); $allowList = config('app.allow_list'); if ($unleash->isFeatureEnabled('myAwesomeFeature', $allowList)) { // Congratulations, you can see this awesome feature! } if ($unleash->isFeatureDisabled('myAwesomeFeature', $allowList)) { // Check back later for more features! }

Blade

Blade directive for checking if a feature is enabled:

@featureEnabled('myAwesomeFeature') Congratulations, you can see this awesome feature! @endfeatureEnabled

Or if a feature is disabled:

@featureDisabled('myAwesomeFeature') Check back later for more features! @endfeatureDisabled

You cannot currently use dynamic strategy arguments with Blade template directives.

Middleware

This package includes middleware that will deny routes depending on whether a feature is enabled or not.

To use the middle, add the following to your app/Http/Kernel.php:

protected $routeMiddleware = [ // other middleware 'feature.enabled' => \MikeFrancis\LaravelUnleash\Middleware\FeatureEnabled::class, 'feature.disabled' => \MikeFrancis\LaravelUnleash\Middleware\FeatureDisabled::class, ];

You can then use the middleware in your routes:

Route::get('/new-feature-path', function () { // })->middleware('feature.enabled:myAwesomeFeature'); Route::get('/terrible-legacy-path', function () { // })->middleware('feature.disabled:myAwesomeFeature');

or in your controllers like so:

class ExampleController extends Controller { public function __construct() { $this->middleware('feature.enabled:myAwesomeFeature'); // or $this->middleware('feature.disabled:myAwesomeFeature'); } }

You cannot currently use dynamic strategy arguments with Middleware.

About

πŸ”˜ An Unleash client for Laravel

Topics

Resources

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published

Contributors 11

Languages