Common
This commit is contained in:
48
common/Service/ParisConfig.php
Normal file
48
common/Service/ParisConfig.php
Normal file
@ -0,0 +1,48 @@
|
||||
<?php
|
||||
namespace Aldarien\Common\Service;
|
||||
|
||||
use \ORM as ORM;
|
||||
use Aldarien\Common\Alias\Model;
|
||||
|
||||
class ParisConfig {
|
||||
protected $default;
|
||||
protected $databases;
|
||||
public function __construct(string $default, object $databases) {
|
||||
$this->default = $default;
|
||||
$this->databases = $databases;
|
||||
}
|
||||
protected function getEngines() {
|
||||
$dir = implode(DIRECTORY_SEPARATOR, [dirname(dirname(__DIR__)), 'src']);
|
||||
$files = new \DirectoryIterator($dir);
|
||||
$engines = [];
|
||||
foreach ($files as $file) {
|
||||
if ($file->isDir() or $file->getExtension() != 'php') {
|
||||
continue;
|
||||
}
|
||||
$engine = $file->getBasename('.' . $file->getExtension());
|
||||
$name = str_replace('requirements', '', strtolower($engine));
|
||||
$engines[$name] = $engine;
|
||||
}
|
||||
return $engines;
|
||||
}
|
||||
public function config() {
|
||||
$engines = $this->getEngines();
|
||||
foreach ($this->databases as $name => $database) {
|
||||
if ($name == $this->default) {
|
||||
$name = ORM::DEFAULT_CONNECTION;
|
||||
}
|
||||
$engine = $database->engine;
|
||||
$requirements = implode("\\", ['Aldarien', 'Models', $engines[strtolower($engine)]]);
|
||||
$requirements = new $requirements();
|
||||
$dsn = $requirements->getDSN($database);
|
||||
ORM::configure($dsn, null, $name);
|
||||
if ($requirements->hasUser()) {
|
||||
ORM::configure('username', $database->user->name, $name);
|
||||
ORM::configure('password', $database->user->password, $name);
|
||||
}
|
||||
}
|
||||
if (isset($this->databases->short_table_names)) {
|
||||
Model::$short_table_names = $this->databases->short_table_names;
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user