2017 © Pedro Peláez
 

library php-simple-config

A simple library to manage configuration files in different formats and cache them.

image

mcustiel/php-simple-config

A simple library to manage configuration files in different formats and cache them.

  • Wednesday, October 28, 2015
  • by mcustiel
  • Repository
  • 3 Watchers
  • 3 Stars
  • 295 Installations
  • PHP
  • 1 Dependents
  • 0 Suggesters
  • 3 Forks
  • 0 Open issues
  • 10 Versions
  • 45 % Grown

The README.md

php-simple-config

What is it?

php-simple-config is a simple and extensible component that allows the developer to abstract the application configuration management., (*1)

php-simple-config uses a minimalistic approach and supports different types of configuration files, the currently supported types are: * PHP files (containing a config array). * INI files * JSON files * YAML files, (*2)

The component can read and write these configuration formats., (*3)

Also, it allows the developer to cache the configurations to increase the performance when accessing to it, this is made through mcustiel/php-simple-cache library., (*4)

Installation

Composer:

Just add the packagist dependecy:, (*5)

    "require": {
    // ...
        "mcustiel/php-simple-config": ">=1.2.0"
    }   

Or, if you want to get it directly from github, adding this to your composer.json should be enough:, (*6)

{
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/mcustiel/php-simple-config"
        }
    ],
    "require": {
        // ...
        "mcustiel/php-simple-config": "dev-master"
    }
}

Or just download the code. :D, (*7)

How to use it?

Reading configuration

First you have to create a configuration file, in this example it is a PHP file. If the format is PHP you must define a variable containing an array with the configuration and return it, for JSON or INI you don't need any special convention:, (*8)

<?php 
return array(
    'PRODUCTION' => array(
        'DB' => array(
            'user' => 'root',
            'pass' => 'root',
            'host' => 'localhost'
        )
    ),
    'STAGE' => array(
        'DB' => array(
            'user' => 'root',
            'pass' => 'root',
            'host' => 'localhost'
        )
    ),
    'LOCAL' => array(
        'DB' => array(
            'user' => 'root',
            'pass' => 'root',
            'host' => 'localhost'
        )
    ),
);

or, if you prefer it:, (*9)

<?php 
$config['PRODUCTION']['DB']['user'] = 'root';
$config['PRODUCTION']['DB']['pass'] = 'root';
$config['PRODUCTION']['DB']['host'] = 'localhost';
// ...
return $config;

Then you can access the config from your code using a Reader object:, (*10)

$reader = new Mcustiel\Config\Drivers\Reader\php\Reader();
$reader->read(__DIR__ . "/resources/test.php");
$config = $reader->getConfig();

or use the Loader class supplied by the library:, (*11)

use Mcustiel\Config\Drivers\Reader\ini\Reader as IniReader;

$loader = new ConfigLoader("/test.ini", new IniReader());
$config = $loader->load();

Accessing configuration

The config object allows you to access the information in the configuration file:, (*12)

$config->getFullConfigAsArray(); // This will return the full configuration as an array.
$config->get('PRODUCTION'); // Will return a $config object to access the subkeys defined under "PRODUCTION"
$config->get('PRODUCTION')->get('DB')->get('user'); // Will return 'root'

Caching the config

php-simple-config allows the developer to create a cached version of the configuration to open and parse it faster. To do this you must provide the ConfigLoader with a CacheConfig object as shown in following code block:, (*13)

use Mcustiel\Config\Drivers\Reader\ini\Reader as IniReader;
use Mcustiel\Config\CacheConfig;

use Mcustiel\SimpleCache\Drivers\memcache\Cache;

$cacheManager = new Cache();
$cacheManager->init();

$loader = new ConfigLoader(
    "/test.ini",
    new IniReader(),
    new CacheConfig($cacheManager, 'test.ini.cache', 3600000)
);

// If the file is already cached, then next sentence loads it from cache; otherwise it's loaded
// from original config file and then saved in the cached version.
$config = $loader->load();

CacheConfig receives the instance of \Mcustiel\SimpleCache\Interfaces\CacheInterface, the key to use, and the time to live in milliseconds., (*14)

Writing configuration

To write the configuration to a file you need a Writer object:, (*15)

$writer = new Mcustiel\Config\Drivers\Writer\ini\Writer($iniConfig);
$writer->write(__DIR__ . "/resources/test-written.ini");

NOTE When writing using ini or yaml format, the library does not guarantee that the original format and item order is kept. But the file is still parseable, (*16)

Example about the note, (*17)

The original ini file, (*18)

b = notAnArray
c = alsoNotAnArray
a.property = value
a.property.deeper = deeperValue

[PRODUCTION]
DB.user = root
DB.pass = root
DB.host = localhost
a.property.inside.production = test

[STAGE]
DB.user = root
DB.pass = root
DB.host = localhost

[LOCAL]
DB.user = root
DB.pass = root
DB.host = localhost

[TEST]
DB.user = root
DB.pass = root
DB.host = localhost

Could be transformed to:, (*19)

b = notAnArray
c = alsoNotAnArray

[PRODUCTION]
DB.user = root
DB.pass = root
DB.host = localhost
a.property.inside.production = test

[STAGE]
DB.user = root
DB.pass = root
DB.host = localhost

[LOCAL]
DB.user = root
DB.pass = root
DB.host = localhost

[a]
property = value
property.deeper = deeperValue

[TEST]
DB.user = root
DB.pass = root
DB.host = localhost

Examples:

In the unit and functional tests you can see examples of php-simple-config use., (*20)

The Versions

28/10 2015

dev-master

9999999-dev

A simple library to manage configuration files in different formats and cache them.

  Sources   Download

GPL-3.0+

The Requires

 

The Development Requires

cache json configuration ini config yaml manager abstraction include multiformat

18/10 2015

dev-develop

dev-develop

A simple library to manage configuration files in different formats and cache them.

  Sources   Download

GPL-3.0+

The Requires

 

The Development Requires

cache json configuration ini config yaml manager abstraction include multiformat

18/10 2015

v2.0.0

2.0.0.0

A simple library to manage configuration files in different formats and cache them.

  Sources   Download

GPL-3.0+

The Requires

 

The Development Requires

cache json configuration ini config yaml manager abstraction include multiformat

06/01 2015

1.2.1

1.2.1.0

A simple library to manage configuration files in different formats and cache them.

  Sources   Download

GPL-3.0+

The Requires

 

The Development Requires

cache json configuration ini config yaml manager abstraction include multiformat

17/12 2014

1.2.0

1.2.0.0

A simple library to manage configuration files in different formats and cache them.

  Sources   Download

GPL-3.0+

The Requires

 

The Development Requires

cache json configuration ini config yaml manager abstraction include multiformat

16/12 2014

1.1.0

1.1.0.0

A simple library to manage configuration files in different formats and cache them.

  Sources   Download

GPL-3.0+

The Requires

 

The Development Requires

cache json configuration ini config yaml manager abstraction include multiformat

27/11 2014

1.0

1.0.0.0

A simple library to manage configuration files in different formats

  Sources   Download

GPL-2.0+

The Requires

  • php >=5.4

 

The Development Requires

config manager abstraction multiformat

16/11 2014

0.5

0.5.0.0

A simple library to manage configuration files in different formats

  Sources   Download

GPL-2.0+

The Requires

  • php >=5.4

 

The Development Requires

config manager abstraction multiformat

22/10 2014

0.3

0.3.0.0

A simple library to manage configuration files in different formats

  Sources   Download

GPL-2.0+

The Requires

  • php >=5.4

 

config manager multiformat

22/10 2014

0.1

0.1.0.0

A simple library to manage configuration files in different formats

  Sources   Download

GPL-2.0+

The Requires

  • php >=5.4

 

config manager multiformat