Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: неправильная работа класса
----- Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
Мелкий
Отправлено: 02 Октября, 2011 - 16:36:47
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Неправильна вся идея наследовать класс DB для конкретного запроса. Используйте, например, паттерн singleton.
----- PostgreSQL DBA
koras
Отправлено: 02 Октября, 2011 - 16:56:27
Частый гость
Покинул форум
Сообщений всего: 224
Дата рег-ции: Окт. 2009
Помог: 0 раз(а)
OrmaJever Вы правы, спасибо большое.
Понял свою ошибку.
Мелкий Можно конкретней.
Про паттерн singleton я читал, но сути не понял, то есть зачем это надо или для чего.
По идее класс db неправильный, не могу понять почему.
Предварительно я создаю обект класса db и работаю с ним, то есть он достаточно большой. но и решил его наследовать чтоб расширить его функционал в классе news и получается что при наследовании, когда коннект к базе был открыт раньше и делались запросы, он как бы закрывается.
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
koras пишет:
По идее класс db неправильный, не могу понять почему.
Потому что уже в приведённом фрагменте устанавливается 2 соединения с базой. Второе при том - совершенно бессмысленно тратит ресурсы.
koras пишет:
Про паттерн singleton я читал, но сути не понял, то есть зачем это надо или для чего.
Суть в том, чтобы сделать класс непосредственно соединения с базой (в этом случае) одним-единственным на весь скрипт, дабы соединение устанавливалось только 1 раз.
Делается соединение с базой-singleton с минимально-необходимым функционалом. Лучше сделать ещё класс для результата.
А когда нужны конкретные запросы уже - делается класс модели, news для этого случая, там уже получается экземпляр DB (а не наследуется!) и делает запрос.
----- PostgreSQL DBA
koras
Отправлено: 02 Октября, 2011 - 17:55:13
Частый гость
Покинул форум
Сообщений всего: 224
Дата рег-ции: Окт. 2009
Помог: 0 раз(а)
У меня класс DB достаточно большой, там различный вывод query и так далее и разделять его как бы не логично. но если разделять то получиться вот что.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.