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 :: Работа с классами

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
supernick
Отправлено: 19 Октября, 2014 - 13:21:34
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Июль 2014  


Помог: 0 раз(а)




Здравствуйте. По требованию преподавателей потихоньку постигаю ООП в PHP. Есть такая задача, нужно вытянуть данные о пользователе из базы, такие как ник, ФИО, адрес электронной почты, дата регистрации и запихнуть это все к класс user. Ну а потом уже выводить информацию в нужном месте используя класс. Почему не вывести данные сразу из базы даже не спрашивайте - так заставили. Так вот подскажите как лучше, проще и удобнее это реализовать? Перебрал несколько книг касательно ООП в php, так там авторы такой непонятный бред пишут. Кстати, данные из базы планировал доставать отдельно написанной функцией. Это нормально или по правилам нужно описывать метод в самом классе? В общем, подскажите, как это можно провернуть, желательно с примерами кода.
 
 Top
3d_killer
Отправлено: 19 Октября, 2014 - 13:33:17
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


Помог: 21 раз(а)




supernick пишет:
Это нормально или по правилам
да нету никаких как бы правил
 
My status
 Top
teddy
Отправлено: 19 Октября, 2014 - 13:58:44
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




supernick пишет:
Так вот подскажите как лучше, проще и удобнее это реализовать?

Есть удобный вариант.

PHP:
скопировать код в буфер обмена
  1. class User
  2. {
  3.     public $name;
  4.     public $email;
  5.     public $register_date;
  6. }
  7.  
  8. $stmt = $dbh->prepare('SELECT `name`, `email`, `register_date` FROM `users` WHERE `id`=:id');
  9. $stmt->setFetchMode(PDO::FETCH_CLASS, 'User');
  10. $stmt->execute(array(':id' => $userId));
  11.  
  12. $user = $stmt->fetch();
  13. var_dump($user->name);

Подразумевается, что переменная $dbh содержит экземпляр класса PDO.

При успешной выборке свойства экземпляра класса User будут заполнены данными из найденной записи в БД но при условии, что каждое название свойства класса User идентично названию поля в БД.

К сожалению, данный подход требует того, что бы свойства класса были публичными. В идеале должна быть некая прослойка, с помощью которой можно было бы заполнить соответствующие свойства даже если они защищенные или приватные. Но для препода я думаю сойдет вполне

(Отредактировано автором: 19 Октября, 2014 - 14:14:05)

 
 Top
3d_killer
Отправлено: 19 Октября, 2014 - 16:08:30
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


Помог: 21 раз(а)




teddy почему же публичными можно создать экземпляр и передать в конструктор массив
 
My status
 Top
teddy
Отправлено: 19 Октября, 2014 - 16:16:43
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




Можно. И без конструктора тоже можно. И даже без сеттеров можно.
Но речь сейчас о режиме fetch class, а не о всех возможных решениях Улыбка

(Отредактировано автором: 19 Октября, 2014 - 16:18:09)

 
 Top
Alex_dark74
Отправлено: 20 Октября, 2014 - 15:26:14
Post Id


Частый гость


Покинул форум
Сообщений всего: 210
Дата рег-ции: Янв. 2012  


Помог: 0 раз(а)




supernick пишет:
желательно с примерами кода

Смысл в таком обучении!!!
 
 Top
esterio
Отправлено: 20 Октября, 2014 - 16:25:29
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




Alex_dark74
ну человеку нужно здать и все забыть. и это конешно лучше чем как я учился тупо Copy & Paste
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB