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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: ООП и MySQLi

Сообщения:  [1-10]   [11-15] 

 
 автор: hk416   (15.11.2012 в 10:34)   письмо автору
 
   для: Sfinks   (15.11.2012 в 09:49)
 

Для этого существует проверка, существует ли объёкт ))))

  Ответить  
 
 автор: Sfinks   (15.11.2012 в 09:49)   письмо автору
 
   для: hk416   (14.11.2012 в 19:33)
 

> Просто здесь вопрос в том что как я понял, нужно сделать так что бы писать как можно меньше кода.
Не правильно поняли. Вопрос был в том, как получать меньше ненужной дублирующейся информации от сервера. Вопрос минимизации кода был решен изначально.

> А куча соединений создаваться не будет, они буду заменять друг друга, так как
> используется объект класса с одним и тем же названием.

Хрен редьки не слаще.
Представьте, что у вас есть объект ПРАЙС, у него есть свойство ГРУППЫ ТОВАРОВ, которое является массивом объектов ГРУППА, у каждого из которых есть свойство ТОВАРЫ, которое является массивом объектов ТОВАР.
А в прайсе 10 групп по 100 товаров в каждой.
И каждому из перечисленных объектов нужно для загрузки свойств подключиться к базе.
Вы чтобы загрузить весь прайс будете подключаться к базе 1011 раз?

  Ответить  
 
 автор: hk416   (14.11.2012 в 19:33)   письмо автору
 
   для: Sfinks   (14.11.2012 в 17:23)
 

А куча соединений создаваться не будет, они буду заменять друг друга, так как используется объект класса с одним и тем же названием. Просто здесь вопрос в том что как я понял, нужно сделать так что бы писать как можно меньше кода.

  Ответить  
 
 автор: Sfinks   (14.11.2012 в 17:23)   письмо автору
 
   для: hk416   (14.11.2012 в 14:38)
 

Потому что тогда у вас будет куча одинаковых соединений (новое в каждом объекте класса), что, как минимум, не желательно.

А к первому посту я вас направил, не потому что вы не в тему, а потому что там есть ответ на вопрос, как сделать, чтоб не писать каждый раз global $db;

  Ответить  
 
 автор: hk416   (14.11.2012 в 14:38)   письмо автору
 
   для: Sfinks   (13.11.2012 в 23:32)
 

Мужики мне это вопрос тоже интересен, просто почему бы создание нового соединения, тобишь создания нового объекта класса БД, просто не запихнуть в конструктор, тех классов которыми вы пользуетесь. Просто у вас есть написанные классы, по классификации MVC это контроллер,в этих классах конструкторы классов.

  Ответить  
 
 автор: Sfinks   (13.11.2012 в 23:32)   письмо автору
 
   для: Giga   (13.11.2012 в 18:16)
 

> Может есть более простое решение, которое позволит хотя бы вставить соединение
> внутрь класса без вставки в каждый метод?

Прочитайте первый пост в этой теме.

  Ответить  
 
 автор: Sfinks   (13.11.2012 в 23:30)   письмо автору
 
   для: Igorek   (13.11.2012 в 07:52)
 

Интересно.... Но у большинства __toString задействован в работе. Так что для меня не вариант.

  Ответить  
 
 автор: Giga   (13.11.2012 в 18:16)   письмо автору
 
   для: cheops   (12.11.2012 в 21:41)
 

А как с PDO вставить в другие классы?
Я делаю вне классов
$db = new PDO();
Потом внутри каждого метода классов, где мне нужно соединение вставляю global $db;
Может есть более простое решение, которое позволит хотя бы вставить соединение внутрь класса без вставки в каждый метод?
Я так понимаю можно конечно организовать новый метод внутри класса, скажем
function db()
{
return new PDO();
}
и потом везде внутри класса использовать $this->db? Правильно ли это и как оно будет сочетаться с $db = new PDO(); вне класса?

  Ответить  
 
 автор: Igorek   (13.11.2012 в 07:52)   письмо автору
 
   для: Sfinks   (12.11.2012 в 23:44)
 

может тогда такой костыль: определить __toString в базовом классе, как -то так:
<?php public function __toString()
{
    
$arr get_object_vars($this);
    unset(
$arr['db']);
    
print_r($arr);
    return 
'';
}

и при выводе объекта просто print или echo пользовать:
<?php echo $object;

  Ответить  
 
 автор: Sfinks   (12.11.2012 в 23:44)   письмо автору
 
   для: cheops   (12.11.2012 в 21:41)
 

publci - что-то итальянское похоже =)

Получается, что в принципе ничего не изменится. Разница лишь в том, что у меня переменная $db доступна сразу, в наследство от класса base, а в вашем варианте она предоставляется по требованию.

Но т.к. от класса base у меня наследуются лишь классы, которые без БД жить не могут, в результате в print_r() ничего не изменится. Жаль.

Большое спасибо =)

  Ответить  

Сообщения:  [1-10]   [11-15] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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