|
|
|
|
|
для: Sfinks
(15.11.2012 в 09:49)
| | Для этого существует проверка, существует ли объёкт )))) | |
|
|
|
|
|
|
|
для: hk416
(14.11.2012 в 19:33)
| | > Просто здесь вопрос в том что как я понял, нужно сделать так что бы писать как можно меньше кода.
Не правильно поняли. Вопрос был в том, как получать меньше ненужной дублирующейся информации от сервера. Вопрос минимизации кода был решен изначально.
> А куча соединений создаваться не будет, они буду заменять друг друга, так как
> используется объект класса с одним и тем же названием.
Хрен редьки не слаще.
Представьте, что у вас есть объект ПРАЙС, у него есть свойство ГРУППЫ ТОВАРОВ, которое является массивом объектов ГРУППА, у каждого из которых есть свойство ТОВАРЫ, которое является массивом объектов ТОВАР.
А в прайсе 10 групп по 100 товаров в каждой.
И каждому из перечисленных объектов нужно для загрузки свойств подключиться к базе.
Вы чтобы загрузить весь прайс будете подключаться к базе 1011 раз? | |
|
|
|
|
|
|
|
для: Sfinks
(14.11.2012 в 17:23)
| | А куча соединений создаваться не будет, они буду заменять друг друга, так как используется объект класса с одним и тем же названием. Просто здесь вопрос в том что как я понял, нужно сделать так что бы писать как можно меньше кода. | |
|
|
|
|
|
|
|
для: hk416
(14.11.2012 в 14:38)
| | Потому что тогда у вас будет куча одинаковых соединений (новое в каждом объекте класса), что, как минимум, не желательно.
А к первому посту я вас направил, не потому что вы не в тему, а потому что там есть ответ на вопрос, как сделать, чтоб не писать каждый раз global $db; | |
|
|
|
|
|
|
|
для: Sfinks
(13.11.2012 в 23:32)
| | Мужики мне это вопрос тоже интересен, просто почему бы создание нового соединения, тобишь создания нового объекта класса БД, просто не запихнуть в конструктор, тех классов которыми вы пользуетесь. Просто у вас есть написанные классы, по классификации MVC это контроллер,в этих классах конструкторы классов. | |
|
|
|
|
|
|
|
для: Giga
(13.11.2012 в 18:16)
| | > Может есть более простое решение, которое позволит хотя бы вставить соединение
> внутрь класса без вставки в каждый метод?
Прочитайте первый пост в этой теме. | |
|
|
|
|
|
|
|
для: Igorek
(13.11.2012 в 07:52)
| | Интересно.... Но у большинства __toString задействован в работе. Так что для меня не вариант. | |
|
|
|
|
|
|
|
для: cheops
(12.11.2012 в 21:41)
| | А как с PDO вставить в другие классы?
Я делаю вне классов
$db = new PDO();
Потом внутри каждого метода классов, где мне нужно соединение вставляю global $db;
Может есть более простое решение, которое позволит хотя бы вставить соединение внутрь класса без вставки в каждый метод?
Я так понимаю можно конечно организовать новый метод внутри класса, скажем
function db()
{
return new PDO();
}
и потом везде внутри класса использовать $this->db? Правильно ли это и как оно будет сочетаться с $db = new PDO(); вне класса? | |
|
|
|
|
|
|
|
для: 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 пользовать:
| |
|
|
|
|
|
|
|
для: cheops
(12.11.2012 в 21:41)
| | publci - что-то итальянское похоже =)
Получается, что в принципе ничего не изменится. Разница лишь в том, что у меня переменная $db доступна сразу, в наследство от класса base, а в вашем варианте она предоставляется по требованию.
Но т.к. от класса base у меня наследуются лишь классы, которые без БД жить не могут, в результате в print_r() ничего не изменится. Жаль.
Большое спасибо =) | |
|
|
|
|