<?php
try {
$db = DatabasePDOTest::getInstance();
var_dump($db->connectToDatabase('test'));
} catch (Exception $ex) {
var_dump($ex);
}
echo "end";
final class DatabasePDOTest extends PDO
{
const STANDARD_DB = 'standard';
const DBHOST = 'host';
const DBUSER = 'user';
const DBPASS = 'password';
const DBNAME = 'dbname';
private static $_instance = null;
private $_persistent = false;
private $_databases = array();
private $_databaseHost = null;
private $_databaseUser = null;
private $_databasePass = null;
private $_database = null;
private $_charset = 'utf8';
public function __construct($persistent = false, $pathAddition = null, $databaseIdentifier = null)
{
$this->_loadConfig($pathAddition);
$this->_persistent = $persistent;
if (! is_null($databaseIdentifier)) {
$this->connectToDatabase($databaseIdentifier);
} else {
if (array_key_exists(self::STANDARD_DB, $this->_databases)) {
$this->connectToDatabase($this->_databases[self::STANDARD_DB]);
} else {
throw new InvalidArgumentException('no database set and no standard found');
}
}
}
public function connectToDatabase($name)
{
if (! array_key_exists($name, $this->_databases)) {
throw new UnexpectedValueException('identifier "' . $name . '" for database does not exist!');
}
$this->_databaseHost = $this->_databases[$name][self::DBHOST];
$this->_databaseUser = $this->_databases[$name][self::DBUSER];
$this->_databasePass = $this->_databases[$name][self::DBPASS];
$this->_database = $this->_databases[$name][self::DBNAME];
return $this->connect();
}
public static function getInstance($persistent = true, $pathAddition = null, $databaseIdentifier = null)
{
if (self::$_instance === null) {
self::$_instance = new DatabasePDOTest($persistent, $pathAddition, $databaseIdentifier);
}
return self::$_instance;
}
public function getOneResultFlat(PDOStatement $stmt)
{
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
$return = array();
array_walk_recursive($results, function ($a) use (&$return) {
$return[] = $a;
});
return $return;
}
public function getMultipleResultFlat(PDOStatement $stmt)
{
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
$returnArray = array();
foreach ($results as $value) {
foreach ($value as $key => $var) {
$returnArray[$key][] = $var;
}
}
return $returnArray;
}
public function getResultArray($sql)
{
$stmt = $this->query($sql);
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
private function connect()
{
parent::__construct(sprintf('mysql:host=%1$s;dbname=%2$s;charset=%3$s', $this->_databaseHost, $this->_database, $this->_charset), $this->_databaseUser, $this->_databasePass, array(
PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_PERSISTENT => $this->_persistent
));
return true;
}
private function _loadConfig($pathAddition = null)
{
$this->_databases = array(
"test" => array(
"host" => "localhost",
"user" => "test",
"password" => "test",
"dbname" => "test"
),
"standard" => "test"
);
}
}
preferences:
52.69 ms | 402 KiB | 5 Q