]> git.andy128k.dev Git - ipf.git/commitdiff
remove unused PDO connection
authorAndrey Kutejko <andy128k@gmail.com>
Sat, 16 Mar 2019 22:40:54 +0000 (23:40 +0100)
committerAndrey Kutejko <andy128k@gmail.com>
Sat, 16 Mar 2019 22:41:37 +0000 (23:41 +0100)
ipf/bootstrap.php
ipf/database.php
ipf/session/app.php

index 9b6fc249ed194b8af5f220917afc2736928bfa67..09ae581af3ec12c9bf08864bfc16330ef5f1b804 100644 (file)
@@ -43,11 +43,9 @@ class BootstrapProvider implements ServiceProviderInterface
         $container->register(new TemplateProvider());
         $container->register(new ErrorPageProvider());
 
-        $container['databaseConnection'] = function ($c) {
-            return \IPF_Database::connect();
-        };
         $container['db'] = $container->factory(function ($c) {
-            return \IPF_Database::connectDBAL();
+            $config = $c['settings']->get('database');
+            return \IPF_Database::connectDBAL($config);
         });
 
         $container->register(new CliProvider());
index 7320e84711fc05a24cea46862358638988168c58..cdabcac728783852a7b1fd2aa323528e3e2db6a1 100644 (file)
@@ -1,39 +1,14 @@
 <?php
 
+use Doctrine\DBAL\Configuration;
+use Doctrine\DBAL\Connection;
+use Doctrine\DBAL\DriverManager;
+
 class IPF_Database
 {
-    public static function connect($database=null)
+    public static function connectDBAL($database)
     {
-        if (!$database)
-            $database = IPF::get('database');
-
-        $driver = \PFF\Arr::get($database, 'driver', 'mysql');
-
-        $dsn = self::makeDsnForPDO($driver,
-            \PFF\Arr::get($database, 'host', 'localhost'),
-            \PFF\Arr::get($database, 'port'),
-            \PFF\Arr::get($database, 'database'));
-
-        $pdoClass = IPF::get('debug') ? 'PDOProfile' : 'PDO';
-
-        $conn = new $pdoClass($dsn,
-            \PFF\Arr::get($database, 'username'),
-            \PFF\Arr::get($database, 'password'));
-
-        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
-        $conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
-        if ($driver === 'mysql')
-            $conn->exec('SET NAMES \'utf8\'');
-        return $conn;
-    }
-
-    public static function connectDBAL($database=null)
-    {
-        if (!$database) {
-            $database = IPF::get('database');
-        }
-
-        $config = new \Doctrine\DBAL\Configuration();
+        $config = new Configuration();
 
         $connectionParams = array(
             'driver' => 'pdo_' . \PFF\Arr::get($database, 'driver', 'mysql'),
@@ -44,49 +19,17 @@ class IPF_Database
             'charset' => 'utf8',
         );
 
-        return \Doctrine\DBAL\DriverManager::getConnection($connectionParams, $config);
-    }
-
-    public static function makeDsnForPDO($driver, $host, $port, $database)
-    {
-        switch ($driver) {
-            case 'sqlite':
-            case 'sqlite2':
-            case 'sqlite3':
-                if ($host == ':memory') {
-                    return 'sqlite::memory:';
-                } else {
-                    return $driver . ':' . $database;
-                }
-
-            case 'mssql':
-            case 'dblib':
-                return $driver . ':host=' . $host . ($port ? ':' . $port : '') . ';dbname=' . $database;
-
-            case 'mysql':
-            case 'informix':
-            case 'oci8':
-            case 'oci':
-            case 'firebird':
-            case 'pgsql':
-            case 'odbc':
-            case 'mock':
-            case 'oracle':
-                return $driver . ':host=' . $host . ($port ? ';port=' . $port : '') . ';dbname=' . $database;
-
-            default:
-                throw new Exception('Unknown driver '.$driver);
-        }
+        return DriverManager::getConnection($connectionParams, $config);
     }
 
-    public static function queryOneObject(\Doctrine\DBAL\Connection $connection, $className, $sql, $params = [], $types = [])
+    public static function queryOneObject(Connection $connection, $className, $sql, $params = [], $types = [])
     {
         $stmt = $connection->executeQuery($sql, $params, $types);
         $stmt->setFetchMode(\PDO::FETCH_CLASS, $className);
         return $stmt->fetch();
     }
 
-    public static function queryAllObjects(\Doctrine\DBAL\Connection $connection, $className, $sql, $params = [], $types = [])
+    public static function queryAllObjects(Connection $connection, $className, $sql, $params = [], $types = [])
     {
         $stmt = $connection->executeQuery($sql, $params, $types);
         return $stmt->fetchAll(\PDO::FETCH_CLASS, $className);
index 2a00e37219879493408840b058e74c5c36aa0e76..563d1644c008e0427565452dc74078dfcf1d0d5f 100644 (file)
@@ -1,11 +1,14 @@
 <?php
 
+use Doctrine\DBAL\Connection;
+use Pimple\Container;
+
 class IPF_Session_App extends IPF_Application
 {
     /** @var SessionBackend[] */
     private $backends;
 
-    public function configure(\Pimple\Container $container)
+    public function configure(Container $container)
     {
         $this->backends = [
             new CookieSessionBackend(),
@@ -101,12 +104,12 @@ class CookieSessionBackend implements SessionBackend
 
 class DBSessionBackend implements SessionBackend
 {
-    /** @var \Pimple\Container */
+    /** @var Container */
     private $container;
     /** @var string */
     private $secret_key;
 
-    public function __construct(Pimple\Container $container, $secret_key)
+    public function __construct(Container $container, $secret_key)
     {
         $this->container = $container;
         $this->secret_key = $secret_key;
@@ -114,7 +117,7 @@ class DBSessionBackend implements SessionBackend
 
     public function getData($key)
     {
-        $connection = $this->getDatabaseConnection();
+        $connection = $this->getConnection();
         $stmt = $connection->prepare('SELECT data FROM session WHERE session_key = :key');
         $stmt->bindValue('key', $key, PDO::PARAM_STR);
         $stmt->execute();
@@ -127,7 +130,7 @@ class DBSessionBackend implements SessionBackend
 
     public function save($key, $data)
     {
-        $connection = $this->getDatabaseConnection();
+        $connection = $this->getConnection();
         if ($key) {
             $stmt = $connection->prepare('UPDATE session SET data = :data, updated_at = NOW() WHERE session_key = :key');
         } else {
@@ -147,18 +150,18 @@ class DBSessionBackend implements SessionBackend
 
     public function delete($key)
     {
-        $connection = $this->getDatabaseConnection();
+        $connection = $this->getConnection();
         $stmt = $connection->prepare('DELETE FROM session WHERE session_key = :key');
         $stmt->bindValue('key', $key, PDO::PARAM_STR);
         $stmt->execute();
     }
 
     /**
-     * @return \PDO
+     * @return Connection
      */
-    private function getDatabaseConnection()
+    private function getConnection()
     {
-        return $this->container['databaseConnection'];
+        return $this->container['db'];
     }
 }