From 986be392f3cabb9e61fc43b9a1738a566a253d9f Mon Sep 17 00:00:00 2001 From: eater Date: Mon, 22 Jan 2018 15:25:15 +0100 Subject: [PATCH] Allow override config --- src/Instance.php | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/src/Instance.php b/src/Instance.php index 55bb99b..5e33251 100644 --- a/src/Instance.php +++ b/src/Instance.php @@ -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(); } } \ No newline at end of file