|
|
|
@ -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();
|
|
|
|
|
}
|
|
|
|
|
}
|