1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
/**
* Database Class
*
* This class manages an instance of PDO registered
* as a singleton by the Singleton class
*
* @see cobalt\util\Singleton
* @author Delespierre
* @version 1.0.0
* @package cobalt\data\source\database
*/
abstract class Database extends Object {
/**
* Typo helper for PDO constructor
* @param string $phptype
* @param string $host
* @param string $database
* @param string $username = ""
* @param string $password = ""
* @return void
* @throws PDOException
*/
public static function open ($phptype, $host, $database, $username = "", $password = "", array $driver_options = array()) {
$dsn = "$phptype:dbname=$database;host=$host";
Singleton::PDO($dsn, $username, $password, $driver_options);
}
/**
* Allow the use of the PDO Singleton directly
* as Database static methods
* @param string $name
* @param array $args
* @throws BadMethodCallException
* @return mixed
*/
public static function __callStatic ($name, $args) {
$pdo = Singleton::PDO();
if (is_callable(array($pdo, $name))) {
switch (count($arguments)) {
case 0: return $pdo->$name(); break;
case 1: return $pdo->$name($args[0]); break;
case 2: return $pdo->$name($args[0], $args[1]); break;
case 3: return $pdo->$name($args[0], $args[1], $args[2]); break;
case 4: return $pdo->$name($args[0], $args[1], $args[2], $args[3]); break;
case 5: return $pdo->$name($args[0], $args[1], $args[2], $args[3], $args[4]); break;
default: return call_user_func_array(array($pdo, $name), $param_arr); break;
}
}
else
throw new BadMethodCallException("No such method: $name");
}
/**
* Typo helper for PDO::prepare
* @param string $statement
* @param array $driver_options
* @return PDOStatement
*/
public static function prepare ($statement, array $driver_options = array()) {
return Singleton::PDO()->prepare($statement, $driver_options);
}
/**
* Typo helper for PDO::query.
* @param string $statement
* @return PDOStatement
*/
public static function simpleQuery ($statement) {
return Singleton::PDO()->query($statement);
}
} |
Partager