|
|
|
| Не знал куда лучше написать, сюда или в раздел по MySQL, но решил что это ближе к PHP...
Есть такой класс для работы с БД:
<?php
class DB {
private static $instance;
public static $db = null;
private function __construct() {}
private function __clone() {}
public static function singleton() {
if (!isset(self::$instance)) {
$c = __CLASS__;
self::$instance = new $c;
self::createKernel();
}
return self::$instance;
}
static function createKernel() {
$dbhost = "localhost"; //database host
$dbuser = "root"; //user
$dbpass = ""; //password
$dbname = "site"; //database name
self::$db = new PDO('mysql:host=' . $dbhost . ';dbname=' . $dbname, $dbuser, $dbpass);
}
}
DB::singleton();
?>
|
Ну а потом я могу использовать метода класса PDO таким образом DB::$db->query(".....");
Скажите, не будет ли это слишком нагружать сервер? Ведь получается, что при вызове любого метода создаётся новое соединение с базой данных... Или я запрограммировался и уже чего-то не понимаю? :) | |
|
|
|
|
|
|
|
для: DEM
(15.07.2011 в 18:59)
| | Подключение один раз только создается. Это же паттерн сингелтон, он один раз создает экземпляр класса и только один его экземпляр ! А вообще лучше функционал метода createKernel() вписать в закрытый конструктор
private function __construct(){
$dbhost = "localhost"; //database host
$dbuser = "root"; //user
$dbpass = ""; //password
$dbname = "site"; //database name
self::$db = new PDO('mysql:host=' . $dbhost . ';dbname=' . $dbname, $dbuser, $dbpass);
}
|
| |
|
|
|
|
|
|
|
для: mirage
(15.07.2011 в 19:38)
| | Я просто этот код подсмотрел в каком-то фреймворке когда делал новый движок CMS...
Спасибо большое! | |
|
|
|