Repository is archived
No commit activity in last 2 years
No release in over 2 years
Bringing the cascading configuration system back to Laravel 5.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Development

phpunit/phpunit
~5.0
 Project Readme

Cascading Config

Build Status Dependency Status License

A simple package that brings the cascading configuration system back into Laravel 5 and its sister project, Lumen.

Requirements

  • Laravel 5, or
  • Lumen >=5.1

Features

  • Laravel-4 style cascading config (can't believe I'm writing this)
  • Nested configuration is fully supported

Installation

First, require phanan/cascading-config into your composer.json and run composer update:

    "require": {
        "phanan/cascading-config": "~2.0"
    },

An environment-based configuration directory should have a name with this format config.{APP_ENV}, and reside in the same directory as the default config dir. For Laravel, php artisan vendor:publish will create a sample directory for your local environment. For Lumen, you'll have to create the directories manually.

Your application structure now should have something like this:

config
├── app.php
├── auth.php
├── cache.php
├── compile.php
├── database.php
├── mail.php
└── ...
config.local
├── app.php
├── auth.php
├── cache.php
├── mail.php
└── nested
    └── app.php

Fill the configuration into your environment-based config directory (config.local, config.staging, config.production), just like what you've always done in Laravel 4,

Usage

For Laravel

  1. Add the package's service provider class into config/app.php:

    'providers' => [
        /*
         * ...
         */
        App\Providers\AppServiceProvider::class,
        App\Providers\EventServiceProvider::class,
        App\Providers\RouteServiceProvider::class,
    
        PhanAn\CascadingConfig\CascadingConfigServiceProvider::class,
    ],
  2. Call config($key)

For Lumen

  1. Register the service provider class in bootstrap/app.php:

    // $app->register(App\Providers\AppServiceProvider::class);
    // $app->register(App\Providers\EventServiceProvider::class);
    $app->register(PhanAn\CascadingConfig\CascadingConfigServiceProvider::class);
  2. Enable multi-environment support by uncommenting this line:

    Dotenv::load(__DIR__.'/../');
  3. Manually register the configuration arrays:

    $app->configure('auth');
    $app->configure('cache');
    $app->configure('mail');
  4. Call config($key)

Notes

Because of the way array_merge_recursive() works, a config key with value being an indexed (non-associative) array (for instance, app.providers) will have the value's items overridden. See #6 for more details on this behavior, and how to work around it.

License

MIT © Phan An