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 :: Реализация класса User и статичной функции в нем
Покинул форум
Сообщений всего: 5
Дата рег-ции: Март 2014
Помог: 0 раз(а)
Доброго времени суток.
У меня есть таблица Users (id, name, age, city). Данные о городах хранятся в таблице cities,таблицы связаны между собой по полю city_id. Мне необходимо создать страницу, выводящую список пользователей в виде таблицы. Но проблема в том, что нужно реализовать класс User. Передавая в конструктор в качестве параметра id пользователя, мы должны на выходе получить объект пользователя с заполненными данными.
Это я делаю следующим образом:
Взято это из книги Бенкен "AJAX программирование для интернета" и переделано мною. Правильно ли я реализовал конструктор?
Так же в этом классе должна быть реализована статичная функция GetAllUsers, которая извлекает всех пользователей из таблицы, причем страница со списком пользователей формируется на основе этих данных. Как сделать это слабо себе представляю.
Должен ли я реализовать вывод полученных данных прямо в этой же функции или рисовать таблицу и заполнять ее нужно отдельно?
T1grOK
Отправлено: 26 Марта, 2014 - 12:50:43
Частый гость
Покинул форум
Сообщений всего: 129
Дата рег-ции: Июнь 2013
Помог: 7 раз(а)
Крайне неудачная реализация. А если мне потребуется создать 10 экземпляров User, тогда у меня будет 10 подключений к БД.
----- Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
esterio
Отправлено: 26 Марта, 2014 - 13:06:14
Активный участник
Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012 Откуда: Украина, Львов
Помог: 127 раз(а)
Есть правило не создавать коннект к базе в конструкторе. запомните это. Используйте паттерн Regostry или Singleton
daewoosh
Отправлено: 26 Марта, 2014 - 13:16:50
Новичок
Покинул форум
Сообщений всего: 5
Дата рег-ции: Март 2014
Помог: 0 раз(а)
T1grOK пишет:
Крайне неудачная реализация. А если мне потребуется создать 10 экземпляров User, тогда у меня будет 10 подключений к БД.
Ну а если закрывать подключение в конце конструктора? или проверку делать на наличие подключения? или вообще подключать в другом месте? попробовал сам реализовать статическую функцию GetAllUsers. Вроде работает все, но хотелось бы узнать удачна ли такая реализация, и , если нет, то почему?
Здесь пока что без конструктора. Рационально ли такое создание таблицы?Возможно ли будет в дальнейшем реализовать редактирование такой таблицы?
DelphinPRO
Отправлено: 26 Марта, 2014 - 14:53:21
Активный участник
Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012
Помог: 353 раз(а)
по сути класс User вообще ничего не должен знать о коннектах. Пусть он скажет вашей абстракции над БД - "дай-ка мне вон те данные", получит их и использует. И пофигу классу откуда взялись эти данные. А БД-абстракция, в свою очередь, не будет вникать что там за данные, она просто выполнит если надо коннект, сделает запрос к мускулу и вернет набор данных тому, кто их попросил.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.