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

Форум PHP

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

 

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

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

тема: объект mysqli
 
 автор: moonfox   (26.12.2013 в 22:05)   письмо автору
 
 

здравствуйте
скажите вот так нормально?

class db
{
   function connect()
   {
    $mysqli = new mysqli($this -> host, $this -> user, $this -> password, $this -> database);
    return $mysqli;
  }

  function close($link)
  {
     $link-> close();
  }
}
$db = new db();
$link = $db->connect();
....
$db->close($link)


то есть меня смущает "таскание" объекта по всем остальным методам класса db

  Ответить  
 
 автор: Enter   (27.12.2013 в 01:42)   письмо автору
 
   для: moonfox   (26.12.2013 в 22:05)
 

Сделайте методы статичными.

  Ответить  
 
 автор: psychomc   (27.12.2013 в 13:02)   письмо автору
 
   для: Enter   (27.12.2013 в 01:42)
 

не, лажовый вариант, хотя бы с точки зрения тестов. аффтар, попробуйте вот так

<?php
class db 

   protected 
$mysqli;

   function 
connect() 
   {
    if (
$this->mysqli === NULL) {
        
$this->mysqli = new mysqli($this -> host$this -> user$this -> password$this -> database);
    } 
    return 
$mysqli
  } 

  function 
close() 
  { 
     if (
$this->mysqli !== NULL) {
         
$link-> close($this->mysqli);
    } 
  } 

  Ответить  
 
 автор: Enter   (27.12.2013 в 14:52)   письмо автору
 
   для: psychomc   (27.12.2013 в 13:02)
 

почему, лажовый. Статичные методы быстрее "работают". Аффтару как раз и не надо плодить объекты. Если не надо, то пусть пользуется статичными методами. И почему у вас return $mysqli; ?

  Ответить  
 
 автор: psychomc   (27.12.2013 в 18:37)   письмо автору
 
   для: Enter   (27.12.2013 в 14:52)
 

лажовый, потому что не гибкий. не удобно будет писать юнит-тесты, сделать более одного подключения к базе данных тоже будет проблематично в таком классе. что-то я не увидел, где автор написал, что ему не нужно плодить объекты. короче, класс в первую очередь должен быть удобным и гибким. да, нужно return $this->mysqli, описка.
по поводу быстрее работают...имхо, можете даже не смотреть в эту сторону, когда речь идёт о классе, работающем с базой данных. дело в том, что каким бы ни был быстрым код самого класса, всё равно всё время сожрет именно подключение к базе данных, поэтому в данном случае совсем не принципиально. и вообще, лучше использовать pdo

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

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