GithubHelp home page GithubHelp logo

cascading-config's Introduction

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

cascading-config's People

Contributors

albertosabena avatar halfer avatar phanan avatar renovate-bot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

cascading-config's Issues

Usage order for Lumen in Readme

In order for this to work properly on Lumen, you need to manually register the configuration arrays before registering the service provider.

config/app.php providers array

It appears that the providers array in config/app.php CAN NOT be overridden in something like config.local/app.php. Is there a way around this? What other config data cannot be changed using cascading config?

Folder Structure

Thanks for creating this package so quickly after the 5.0 release.

Wouldn't it be better to have the folder structure use nested configs instead of same level folders for each environment?

i.e.
config/
config/local
config/prod/

instead of

config
config.local
config.prod

Update: Mistakenly hit enter

Wrong service provider class in documentation

Hi, thanks for the great work!

Just a small note to notify you a problem in the documentation.
Seems that in the config/app.php is needed to add the line

'PhanAn\CascadingConfig\CascadingConfigServiceProvider',

instead of

'PhanAn\CascadingConfig\CascadingConfigProvider',

as you specified, after that it works like a charm!
Thank you!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.