This package is abandoned and no longer maintained. The author suggests using the northwoods/config package instead.

PHP configurations loading

0.6.4 2016-05-18 17:13 UTC


Build Status StyleCI Scrutinizer Code Quality Code Coverage Code Climate Latest Stable Version Total Downloads License SensioLabsInsight Gitter

PHP configurations loading library. It is made to enable your application to have different configurations depending on the environment it is running in. For example, your application can have different configurations for unit tests, development, staging and production.

A good practice would be to not include your production or staging configurations in your version control. To do this, Config supports Dotenv.


This library uses PHP 5.6+.


It is recommended that you install the Config library through composer. To do so, run the Composer command to install the latest stable version of Config:

composer require sinergi/config


Use the factory to instanciate a Config collection class:

use Sinergi\Config\Collection;

$config = Collection::factory([
    'path' => __DIR__ . "/configs"

Optionally, you can also setup the environment. Setting up the environment will merge normal configurations with configurations in the environment directory. For example, if you setup the environment to be prod, the configurations from the directory configs/prod/* will be loaded on top of the configurations from the directory configs/*. Consider the following example:

use Sinergi\Config\Collection;

$config = Collection::factory([
    'path' => __DIR__ . "/configs",
    'environment' => 'prod'

Optionally, you can also use dotenv to hide sensible information into a .env file. To do so, specify a directory where the .env file. Like in this example:

use Sinergi\Config\Collection;

$config = Collection::factory([
    'path' => __DIR__ . "/configs",
    'dotenv' => __DIR__,
    'environment' => 'prod'

You can than use the configurations like this:



The configuration getter uses a simple syntax: file_name.array_key.

For example:


You can optionally set a default value like this:

$config->get('app.timezone', "America/New_York");

You can use the getter to access multidimensional arrays in your configurations:



Alternatively, you can set configurations from your application code:

$config->set('app.timezone', "Europe/Berlin");

You can set entire arrays of configurations:

$config->set('database', [
    'host' => "localhost",
    'dbname' => "my_database",
    'user' => "my_user",
    'password' => "my_password"


See more examples in the examples folder.

PHP Configuration File

Example of a PHP configuration file:

return [
    'timezone' => "America/New_York"

Yaml Configuration File

Example of a YAML configuration file:

timezone: America/New_York


Example of using Dotenv in a PHP configuration file:

return [
    'timezone' => env('TIMEZONE', "America/New_York")

And in the .env file:



Config is licensed under The MIT License (MIT).