A simple config.
DEPRECATED: I suggest to use chubbyphp-laminas-config with or without config stuff from laminas.
- php: ^7.2
- chubbyphp/chubbyphp-container: ^1.0
- pimple/pimple: ^3.2.3
- symfony/console: ^2.8.50|^3.4.26|^4.2.7|^5.0
Through Composer as chubbyphp/chubbyphp-config.
composer require chubbyphp/chubbyphp-config "^2.1"
<?php
namespace MyProject;
use Chubbyphp\Config\ConfigProvider;
use Chubbyphp\Config\ServiceFactory\ConfigServiceFactory;
use Chubbyphp\Container\Container;
use MyProject\Config\DevConfig;
use MyProject\Config\ProdConfig;
$env = 'dev';
$container = new Container();
$container->factories((new ConfigServiceFactory((new ConfigProvider([
new DevConfig(__DIR__.'/..'),
new ProdConfig(__DIR__.'/..'),
]))->get($env)))());
<?php
namespace MyProject;
use Chubbyphp\Config\ConfigProvider;
use Chubbyphp\Config\ServiceProvider\ConfigServiceProvider;
use MyProject\Config\DevConfig;
use MyProject\Config\ProdConfig;
use Pimple\Container;
$env = 'dev';
$container = new Container();
$container->register(new ConfigServiceProvider(
(new ConfigProvider([
new DevConfig(__DIR__.'/..'),
new ProdConfig(__DIR__.'/..'),
]))->get($env)
));
<?php
namespace MyProject\Config;
use Chubbyphp\Config\ConfigInterface;
class DevConfig implements ConfigInterface
{
/**
* @var string
*/
private $rootDir;
/**
* @param string $rootDir
*/
public function __construct(string $rootDir)
{
$this->rootDir = $rootDir;
}
/**
* @return array
*/
public function getConfig(): array
{
return [
'env' => $this->getEnv(),
'rootDir' => $this->rootDir
];
}
/**
* @return array
*/
public function getDirectories(): array
{
$environment = $this->getEnv();
return [
'cache' => $this->rootDir . '/var/cache/' . $environment,
'logs' => $this->rootDir . '/var/logs/' . $environment,
];
}
public function getEnv(): string
{
return 'dev';
}
}
Dominik Zogg 2020