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 [2]

 PHP.SU

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


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

> Без описания
sKaa
Отправлено: 08 Июня, 2012 - 16:57:05
Post Id



Частый посетитель


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


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

[+]


Перенесено из темы "Урок №19 - Немного о паттернах"
Bio man, ну поскольку у тебя не фреймворк а готовое приложение думаю универсальности моделей и контроллеров тут добиваться не стоит.

Я бы всё равно User и UserSession объединил в одну модель т.к логика одна, в базовом контроллере который наследуется всеми остальными проверял авторизацию, если нет то делать принудительно редирект на главную\регистрацию\форму Log In...
 
 Top
caballero
Отправлено: 08 Июня, 2012 - 18:30:17
Post Id


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


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


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




Перенесено из темы "Урок №19 - Немного о паттернах"
Цитата:
Потому я сделаю так: создам класс UserSession, класс User (модели) и в классах контроллерах буду проверять права, зашел ли юзер и работать с остальными данными User'а.

а класс UserSession шо еще такое и зачем?

Цитата:
Если есть аргументы почему так не делать то пишите, буду рад. Если же нету то и писать не стоит.

Вообще то, это ты должен привести аргументы почему собираешся писать так а не иначе. А у тебя основной аргумент - некто так написал (хоть и сам не понимаю почему)


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Bio man
Отправлено: 08 Июня, 2012 - 20:03:29
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


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




Перенесено из темы "Урок №19 - Немного о паттернах"
caballero пишет:
а класс UserSession шо еще такое и зачем?
Ну Евгений сказал, что лучше сделать сие.
caballero пишет:
Вообще то, это ты должен привести аргументы
У меня не гора опыта, что бы всё делать правильно и аргументированно. Я предложил свой вариант на обсуждение, но если сложно поправить меня и сказать что так и что не так то и не надо, как нибудь сам.

Вопрос: UserSession это модель? То есть оно будет смотреть куку, говорить классу User вошел ли юзер, и будет писать данные в сессию. Просто не знаю куда сунуть этот класс, но думаю, что в модели.

И еще, стоит ли для доступа к данным пользователя делать класс User как ArrayAccess?



Модераторы, ради бога, вынесите это все в отдельную тему, что бы не захламлять урок. Спасибо.
 
 Top
sKaa
Отправлено: 08 Июня, 2012 - 21:40:27
Post Id



Частый посетитель


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


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

[+]


Bio man пишет:
класс User как ArrayAccess?
Имхо это перебор )))
:Шокированverhead::
(Добавление)
Если хочешь поиграть с интерфейсами заведи паттерн Registry Улыбка ему и ArrrayAccess и Countable и еще там что-то было ))
 
 Top
Bio man
Отправлено: 08 Июня, 2012 - 21:50:39
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


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




sKaa
а по моему удобно
PHP:
скопировать код в буфер обмена
  1. $user = new User;
  2. $user['email'];
  3. $user['name'];
  4. //...

гораздо короче, чем
PHP:
скопировать код в буфер обмена
  1. $userParams = $user->getParams();
  2. $userParams['email'];
  3. $userParams['name'];
  4. //...


А хотя и вправду перебор. Проблемы возникнут при изменении параметров

(Отредактировано автором: 08 Июня, 2012 - 21:55:22)

 
 Top
caballero
Отправлено: 08 Июня, 2012 - 22:02:26
Post Id


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


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


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




Цитата:
Вопрос: UserSession это модель? То есть оно будет смотреть куку, говорить классу User вошел ли юзер, и будет писать данные в сессию. Просто не знаю куда сунуть этот класс, но думаю, что в модели.

думаю что в данном классе не смысла - он будет либо дублировать юзера либо корнтроллер. У тебя наверняка будет некий контроллер с action типа login
вот там пусть и создается екземпляр юзера.
Хотя нп самом деле достаточно записать в сессию id юзера а сам объект подтягивать когда он понадобится


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
NickSevenfold
Отправлено: 11 Июля, 2012 - 14:57:09
Post Id


Новичок


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


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




Для себя использую сл. структуру:

PHP:
скопировать код в буфер обмена
  1.  
  2. class User extends Base_model
  3. {
  4.   public function login($params)
  5.   {
  6.     /*
  7.     * Логика
  8.     */
  9.     Session::setVal($params)
  10.   }
  11.  
  12.   public function getName()
  13.   {
  14.     Session::getVal('user', 'name');
  15.   }
  16. }
  17.  


Т.е. у меня существует отдельно модель пользователя и модель сессии, которые связаны. Другое дело, если Вы храните сессию в базе.

Логика приложения не нарушается и убирается дублирование кода.
 
 Top
caballero
Отправлено: 11 Июля, 2012 - 15:11:09
Post Id


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


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


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




Цитата:
Логика приложения не нарушается и убирается дублирование кода.

Зато здравый смысл нарушается. Екземпляр какого юзера ты создаешь перед тем как логин выполнить?


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Мелкий Супермодератор
Отправлено: 11 Июля, 2012 - 15:15:56
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




caballero пишет:
Екземпляр какого юзера ты создаешь перед тем как логин выполнить?

Гостевой?


-----
PostgreSQL DBA
 
 Top
Stierus Супермодератор
Отправлено: 12 Июля, 2012 - 10:02:52
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


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




Bio man, я с тобой полностью согласен, что в абстрактном (базовом) контроллере не должно быть подобных функций. Чем login и logout принципиально отличаются от checkUserCart или setLastLoginTime - для меня не понятно.

касательно вопроса, а где оно должно быть - в контроллере, если речь идет об MVC модели, но контроллере не базовом (я так понимаю, в нем должны находиться облегчающие жизнь всем наследуемым контроллерам функции, аля логирование, отработка ошибок - вывод 404 и 3** страниц, редиректы и тд), а контроллере User, где помимо ф-й login, logout (которые должны валидировать входящие данные, использовать модели данных и тд - классический контроллер), будут еще showInfo, showFriendlist и прочие ф-и работы с пользователем
 
My status
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Объектно-ориентированное программирование »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB