DriverManager.php 848 B

1234567891011121314151617181920212223242526272829303132
  1. <?php
  2. namespace PhpDevCommunity\PaperORM\Driver;
  3. use Exception;
  4. use PhpDevCommunity\PaperORM\PaperConnection;
  5. class DriverManager
  6. {
  7. private static array $driverSchemeAliases = [
  8. 'sqlite' => SqliteDriver::class,
  9. 'sqlite3' => SqliteDriver::class,
  10. ];
  11. public static function getConnection(string $driver, array $params): PaperConnection
  12. {
  13. $driver = strtolower($driver);
  14. $drivers = self::$driverSchemeAliases;
  15. if (isset($params['driver_class'])) {
  16. $drivers[$driver] = $params['driver_class'];
  17. }
  18. if (!isset($drivers[$driver])) {
  19. throw new Exception('Driver not found, please check your config : ' . $driver);
  20. }
  21. $driver = $drivers[$driver];
  22. $driver = new $driver();
  23. return new PaperConnection($driver, $params);
  24. }
  25. }