Просмотр кода
Название: Sample DB Singleton
Описание: Выше все
Добавил: mrcatoff
Дата: 9 июля 2018, в 1:38 Комментарии (1)
Описание: Выше все
<?php
/**
* User: MrCatOff
* E-Mail: [email protected]
* File: DB.php
* Copyright 2018 MrCatOff - All rights reserved
*/
class DB
{
private static $_instance = null;
private $connection = [];
private $parent;
private function __construct () { return false; }
private function __clone () { return false; }
private function __wakeup () { return false; }
public static function getInstance()
{
if (self::$_instance === null) {
self::$_instance = new self();
}
return self::$_instance;
}
public function connect($name, $value)
{
// TODO: Implement __set() method.
$this->connection[$name] = new PDO(
'mysql:host=' . $value['DB_HOST'] . ';dbname=' . $value['DB_NAME'],
$value['DB_USER'],
$value['DB_PASS'],
[
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'",
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
);
}
public function set($name)
{
if (array_key_exists($name, $this->connection)) {
$this->parent = $name;
}
}
public function get() {
if (array_key_exists($this->parent, $this->connection)) {
return $this->connection[$this->parent];
}
}
public function prepare($sql, $execute) {
$temp = $this->connection[$this->parent]->prepare("$sql");
foreach ($execute as $item) {
$temp->bindValue(':' . $item[0], $item[1], $item[2]);
}
$temp->execute();
return $temp;
}
}
?>
Пример Singleton Connection БД;
Создание соединения:
DB::getInstance()->connect('core', ['DB_HOST' => '', 'DB_NAME' => '', 'DB_USER' => 'root', 'DB_PASS' => '']);
core - Имя для последующего выбора соединения, для каждого соединения свое имя =)
Установка соединения на для текущего выполнения:
DB::getInstance()->set('core');
Подготовка запроса:
$cities = DB::getInstance()->prepare("SELECT * FROM `cities` WHERE `id` = :id", [['id', 1, PDO::PARAM_INT]]);
$cities = $cities->fetch();
Получить последний ИД внесенный в БД
DB::getInstance()->get()->lastinsertid()
Добавил: mrcatoff
Адм
Дата: 9 июля 2018, в 1:38 Комментарии (1)