A file configuration loader that supports PHP, INI, XML, JSON, and YML files for the Slim Framework. It internally uses hassankhan/config.
Via Composer
$ composer require davidepastore/slim-config
Requires Slim 3.0.0 or newer.
In most cases you want to register DavidePastore\Slim\Config
for a single route, however,
as it is middleware, you can also register it for all routes.
$app = new \Slim\App();
// Fetch DI Container
$container = $app->getContainer();
// Register provider
$container['config'] = function () {
//Create the configuration
return new \DavidePastore\Slim\Config\Config('config.json');
};
$app->get('/api/myEndPoint',function ($req, $res, $args) {
//Here you have your configuration
$config = $this->config->getConfig();
$secret = $config->get('security.secret');
})->add($container->get('config'));
$app->run();
$app = new \Slim\App();
// Fetch DI Container
$container = $app->getContainer();
// Register provider
$container['config'] = function () {
//Create the configuration
return new \DavidePastore\Slim\Config\Config('config.json');
};
// Register middleware for all routes
// If you are implementing per-route checks you must not add this
$app->add($container->get('config'));
$app->get('/foo', function ($req, $res, $args) {
//Here you have your configuration
$config = $this->config->getConfig();
$secret = $config->get('security.secret');
});
$app->post('/bar', function ($req, $res, $args) {
//Here you have your configuration
$config = $this->config->getConfig();
$ttl = $config->get('app.timeout', 3000);
});
$app->run();
The configuration is loaded from the filesystem only when the given route is called in the per route usage. In the other case (all routes) the config should be general and used in the whole routes, because it's read in every request.
You can read the hassankhan/config documentation here for more info.
$ phpunit
Please see CONTRIBUTING for details.