Allow override config

master v1.0.1
eater 6 years ago
parent f8311b8b35
commit 986be392f3
Signed by: eater
GPG Key ID: AD2560A0F84F0759

@ -56,10 +56,24 @@ class Instance
'http' => 'http',
];
public static function create($directory, $environment = 'development'): Instance
public static function create($directory, $environment = 'development', $overrideConfig = []): Instance
{
$instance = new Instance(realpath($directory), $environment);
$instance->load();
$realDir = realpath($directory);
if (file_exists($realDir . '/vendor/autoload.php')) {
include_once $directory . '/vendor/autoload.php';
}
if ($environment === 'dev') {
$environment = 'development';
}
if ($environment === 'prod') {
$environment = 'production';
}
$instance = new Instance(realpath($realDir), $environment);
$instance->load($overrideConfig);
return $instance;
}
@ -70,10 +84,10 @@ class Instance
$this->environment = $environment;
}
public function load()
public function load($overrideConfig = [])
{
$container = $this->buildTemporaryContainer();
$this->buildContainer($container->get('modules'));
$container = $this->buildTemporaryContainer($overrideConfig);
$this->buildContainer($container->get('modules'), $overrideConfig);
$this->registerCalls();
$this->runLoaders();
@ -145,7 +159,7 @@ class Instance
}
private function buildTemporaryContainer() {
private function buildTemporaryContainer($overrideConfig = []) {
$builder = new ContainerBuilder();
$builder->addDefinitions([
@ -154,6 +168,8 @@ class Instance
$this->loadDefinitions($builder, [__DIR__ . '/..', $this->directory]);
$builder->addDefinitions($overrideConfig);
return $builder->build();
}
@ -190,7 +206,7 @@ class Instance
}
}
private function buildContainer($modules)
private function buildContainer($modules, $overrideConfig = [])
{
$builder = new ContainerBuilder();
@ -204,6 +220,8 @@ class Instance
$this->loadModules($modules, $builder);
$this->loadDefinitions($builder, [$this->directory]);
$builder->addDefinitions($overrideConfig);
$this->container = $builder->build();
}
}
Loading…
Cancel
Save