Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: SingleTo и работа с MySQL
 
 автор: DEM   (15.07.2011 в 18:59)   письмо автору
 
 

Не знал куда лучше написать, сюда или в раздел по 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(".....");
Скажите, не будет ли это слишком нагружать сервер? Ведь получается, что при вызове любого метода создаётся новое соединение с базой данных... Или я запрограммировался и уже чего-то не понимаю? :)

  Ответить  
 
 автор: mirage   (15.07.2011 в 19:38)   письмо автору
 
   для: 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);
}

  Ответить  
 
 автор: DEM   (15.07.2011 в 20:01)   письмо автору
 
   для: mirage   (15.07.2011 в 19:38)
 

Я просто этот код подсмотрел в каком-то фреймворке когда делал новый движок CMS...

Спасибо большое!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования