<?php
// ------------------------------------------------------------------
// - Database class'es -
// ------------------------------------------------------------------
/**
* Main database class
* Works as a layer over PDO. Every static call is forwarded to the PDO object, except for those which are defined
*
**/
class DB
{
protected static $DB;
private function __construct() {}
private function __clone() {}
public static function connect($dbname='default', $host='localhost', $user='root', $password='')
{
try {
// connects to the database
self::$DB = new PDO("mysql:dbname=$dbname;host:=$host" , $user , $password);
// set the error reporting attribute
self::$DB->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e) {
echo $e->getMessage();
}
}
public static function close_connection()
{
self::$DB = NULL;
}
public static function __callStatic($name, $arguments)
{
return forward_static_call_array(array(self::$DB, $name), $arguments);
}
}
/**
* A test class
* Using SQLite with 'sqlite::memory:' so that its no need for username, password, etc
* Perfect for quick testing purpose
*
**/
class DBtest extends DB
{
public static function connect()
{
try {
self::$DB = new PDO("sqlite::memory:"); // connect to database
echo 'database created in memory <br /> <br />'; // only at debug mode - @TODO: remove it
self::$DB->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // set the error reporting attribute
}
catch(PDOException $e) {
echo $e->getMessage();
}
}
}
// ------------------------------------------------------------------
// - Initilize a standard connection -
// ------------------------------------------------------------------
include 'config.php';
$dbh::connect( $config['db']['default']['dbname'],
$config['db']['default']['host'],
$config['db']['default']['username'],
$config['db']['default']['password']
);
?>