Prechádzať zdrojové kódy

Adding a general PDO connection creation class

ahwelp 4 rokov pred
rodič
commit
5b6c3ee627
1 zmenil súbory, kde vykonal 57 pridanie a 0 odobranie
  1. 57 0
      src/ORM/Connection.php

+ 57 - 0
src/ORM/Connection.php

@@ -0,0 +1,57 @@
+<?php
+
+namespace ORM;
+
+/**
+* \PDO generator class
+*
+* This code is based on the TConnection.php class on the Adianti Framework
+*
+* @license    http://www.adianti.com.br/framework-license
+*
+*/
+
+class Connection {
+
+    private function __construct() {
+
+    }
+
+    public static function open($connection_info = null) {
+
+        $user   = isset($connection_info['user']) ? $connection_info['user'] : NULL;
+        $pass   = isset($connection_info['pass']) ? $connection_info['pass'] : NULL;
+        $name   = isset($connection_info['name']) ? $connection_info['name'] : NULL;
+        $host   = isset($connection_info['host']) ? $connection_info['host'] : NULL;
+        $driver = isset($connection_info['driver']) ? $connection_info['driver'] : NULL;
+        $port   = isset($connection_info['port']) ? $connection_info['port'] : NULL;
+        $prefix = isset($connection_info['prefix']) ? $connection_info['prefix'] : '';
+
+        switch ($driver) {
+            case 'pgsql':
+                $port = $port ? $port : '5432';
+                $conn = new \PDO("pgsql:dbname={$name}; user={$user}; password={$pass};host=$host;port={$port}");
+                break;
+            case 'mysql':
+                $port = $port ? $port : '3306';
+                $conn = new \PDO("mysql:host={$host};port={$port};dbname={$name}", $user, $pass);
+                break;
+            case 'sqlite':
+                $conn = new \PDO("sqlite:{$name}");
+                break;
+            case 'ibase':
+                $conn = new \PDO("firebird:dbname={$name}", $user, $pass);
+                break;
+            case 'oci8':
+                $conn = new \PDO("oci:dbname={$name}", $user, $pass);
+                break;
+            case 'mssql':
+                $conn = new \PDO("mssql:host={$host},1433;dbname={$name}", $user, $pass);
+                break;
+        }
+        $conn->prefix = $prefix;
+        $conn->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
+        return $conn;
+    }
+
+}