Loading src/Bdd.php +38 −4 Changes for src/Bdd.php: 38 added lines, 4 removed lines. Original line number Diff line number Diff line Loading @@ -144,6 +144,9 @@ class Bdd protected bool $inCopy = false; /** @var \Psr\Container\ContainerInterface|null */ public $__container = null; private DataManager $data; Loading @@ -151,7 +154,7 @@ class Bdd public function __construct(array $options = [], ?string $connection = null) { if (!empty($options)) { // Compatibilité avec l'ancienne configuration des connections // Compatibilité avec l'ancienne configuration des connexions if (!isset($options[self::OPTION_CONNECTION]) && isset($options['host'])) { $options = [self::OPTION_CONNECTION => [$connection => $options]]; } Loading @@ -173,6 +176,33 @@ class Bdd /** * Hack pour initialiser une classe à partir d'un container respectant Psr\Container\ContainerInterface * Si la classe n'est pas connue du container, alors elle est instanciée à l'aide de new * * @param string $classname * @return object * @throws \Psr\Container\ContainerExceptionInterface * @throws \Psr\Container\NotFoundExceptionInterface * */ public function __newClass(string $classname): mixed { if ($this->__container && method_exists($this->__container, 'has') && method_exists($this->__container, 'get')){ if ($this->__container->has($classname)){ return $this->__container->get($classname); } } if (!class_exists($classname)){ throw new \Exception('La classe '.$classname.' n\'existe pas'); } return new $classname; } public function hasConnection(string $connection): bool { $connections = $this->options[self::OPTION_CONNECTION]; Loading Loading @@ -297,7 +327,11 @@ class Bdd public function select(string $sql, array $params = [], array $options = []): array|null|SelectParser { return $this->driver->select($sql, $params, $options); $result = $this->driver->select($sql, $params, $options); if (false === $result){ return null; } return $result; } Loading Loading @@ -787,7 +821,7 @@ class Bdd public function install(): self public function install(bool $withData=true): self { $this->logTitle('Installation de la base de données'); Loading @@ -800,7 +834,7 @@ class Bdd $this->logError($e); } if (!empty($this->data()->getSources())) { if ($withData && !empty($this->data()->getSources())) { // Installation des données $this->logTitle('Insertion du jeu de données données'); try { Loading src/BddFactory.php +2 −28 Changes for src/BddFactory.php: 2 added lines, 28 removed lines. Original line number Diff line number Diff line Loading @@ -29,35 +29,9 @@ class BddFactory } $config = $container->get('config')['unicaen-bddadmin']; $bdd = new Bdd($this->prepareConfig($config, $container)); $bdd = new Bdd($config); $bdd->__container = $container; return $bdd; } protected function prepareConfig(array $config, ContainerInterface $container): array { // Chargement des sources de données depuis le ServiceManager si nécessaire if (isset($config[Bdd::OPTION_DATA][DataManager::OPTION_SOURCES])){ $sources = &$config[Bdd::OPTION_DATA][DataManager::OPTION_SOURCES]; foreach( $sources as $index => $source){ if ($container->has($source)){ $sources[$index] = $container->get($source); } } } // Chargement des scripts de migration depuis le ServiceManager si nécessaire if (isset($config[Bdd::OPTION_MIGRATION])){ $sources = &$config[Bdd::OPTION_MIGRATION]; foreach( $sources as $index => $source){ if ($container->has($source)){ $sources[$index] = $container->get($source); } } } return $config; } } No newline at end of file src/Data/DataManager.php +4 −0 Changes for src/Data/DataManager.php: 4 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -72,6 +72,10 @@ class DataManager break; } $methodName = str_replace('.', '_', $table); if (is_string($source) && class_exists($source)){ $source = $this->getBdd()->__newClass($source); } if (is_object($source) && method_exists($source, $methodName)) { $data = $source->$methodName($action); break; Loading src/Migration/MigrationManager.php +1 −1 Changes for src/Migration/MigrationManager.php: 1 added line, 1 removed line. Original line number Diff line number Diff line Loading @@ -164,7 +164,7 @@ class MigrationManager foreach ($scripts as $index => $script) { if (is_string($script) && class_exists($script)) { $script = new $script(); $script = $this->getBdd()->__newClass($script); $scripts[$index] = $script; } if (!$script instanceof MigrationAction) { Loading Loading
src/Bdd.php +38 −4 Changes for src/Bdd.php: 38 added lines, 4 removed lines. Original line number Diff line number Diff line Loading @@ -144,6 +144,9 @@ class Bdd protected bool $inCopy = false; /** @var \Psr\Container\ContainerInterface|null */ public $__container = null; private DataManager $data; Loading @@ -151,7 +154,7 @@ class Bdd public function __construct(array $options = [], ?string $connection = null) { if (!empty($options)) { // Compatibilité avec l'ancienne configuration des connections // Compatibilité avec l'ancienne configuration des connexions if (!isset($options[self::OPTION_CONNECTION]) && isset($options['host'])) { $options = [self::OPTION_CONNECTION => [$connection => $options]]; } Loading @@ -173,6 +176,33 @@ class Bdd /** * Hack pour initialiser une classe à partir d'un container respectant Psr\Container\ContainerInterface * Si la classe n'est pas connue du container, alors elle est instanciée à l'aide de new * * @param string $classname * @return object * @throws \Psr\Container\ContainerExceptionInterface * @throws \Psr\Container\NotFoundExceptionInterface * */ public function __newClass(string $classname): mixed { if ($this->__container && method_exists($this->__container, 'has') && method_exists($this->__container, 'get')){ if ($this->__container->has($classname)){ return $this->__container->get($classname); } } if (!class_exists($classname)){ throw new \Exception('La classe '.$classname.' n\'existe pas'); } return new $classname; } public function hasConnection(string $connection): bool { $connections = $this->options[self::OPTION_CONNECTION]; Loading Loading @@ -297,7 +327,11 @@ class Bdd public function select(string $sql, array $params = [], array $options = []): array|null|SelectParser { return $this->driver->select($sql, $params, $options); $result = $this->driver->select($sql, $params, $options); if (false === $result){ return null; } return $result; } Loading Loading @@ -787,7 +821,7 @@ class Bdd public function install(): self public function install(bool $withData=true): self { $this->logTitle('Installation de la base de données'); Loading @@ -800,7 +834,7 @@ class Bdd $this->logError($e); } if (!empty($this->data()->getSources())) { if ($withData && !empty($this->data()->getSources())) { // Installation des données $this->logTitle('Insertion du jeu de données données'); try { Loading
src/BddFactory.php +2 −28 Changes for src/BddFactory.php: 2 added lines, 28 removed lines. Original line number Diff line number Diff line Loading @@ -29,35 +29,9 @@ class BddFactory } $config = $container->get('config')['unicaen-bddadmin']; $bdd = new Bdd($this->prepareConfig($config, $container)); $bdd = new Bdd($config); $bdd->__container = $container; return $bdd; } protected function prepareConfig(array $config, ContainerInterface $container): array { // Chargement des sources de données depuis le ServiceManager si nécessaire if (isset($config[Bdd::OPTION_DATA][DataManager::OPTION_SOURCES])){ $sources = &$config[Bdd::OPTION_DATA][DataManager::OPTION_SOURCES]; foreach( $sources as $index => $source){ if ($container->has($source)){ $sources[$index] = $container->get($source); } } } // Chargement des scripts de migration depuis le ServiceManager si nécessaire if (isset($config[Bdd::OPTION_MIGRATION])){ $sources = &$config[Bdd::OPTION_MIGRATION]; foreach( $sources as $index => $source){ if ($container->has($source)){ $sources[$index] = $container->get($source); } } } return $config; } } No newline at end of file
src/Data/DataManager.php +4 −0 Changes for src/Data/DataManager.php: 4 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -72,6 +72,10 @@ class DataManager break; } $methodName = str_replace('.', '_', $table); if (is_string($source) && class_exists($source)){ $source = $this->getBdd()->__newClass($source); } if (is_object($source) && method_exists($source, $methodName)) { $data = $source->$methodName($action); break; Loading
src/Migration/MigrationManager.php +1 −1 Changes for src/Migration/MigrationManager.php: 1 added line, 1 removed line. Original line number Diff line number Diff line Loading @@ -164,7 +164,7 @@ class MigrationManager foreach ($scripts as $index => $script) { if (is_string($script) && class_exists($script)) { $script = new $script(); $script = $this->getBdd()->__newClass($script); $scripts[$index] = $script; } if (!$script instanceof MigrationAction) { Loading