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

 PHP.SU

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


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

> Без описания
Bio man
Отправлено: 07 Июня, 2012 - 22:54:25
Post Id


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


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


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




Выделено в отдельную тему из темы "Урок №19 - Немного о паттернах"
Скажите, зачем выносить loginUser() и logoutUser() в базовый класс контроллера? Просто поглядываю на код как на пример и мне не понятно зачем это. Не будет ли лучше сделать это в контроллере User?
 
 Top
EuGen Администратор
Отправлено: 07 Июня, 2012 - 23:05:01
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




Выделено в отдельную тему из темы "Урок №19 - Немного о паттернах"
Вопрос резонный. И ответ на него - безусловно, спорен. Приведу аргументы, которые были приняты мной при разработке архитектуры.
Логика, закладываемая в приложение - то, что сущность "Пользователь" - не участвует в создании своей сессии внутри приложения (так как сессия пользователя - это, строго говоря, вообще отдельная сущность, но в рамках примера она опущена для простоты), и, аналогично, в разрушении своей сессии. Иными словами - пользователь здесь это скорее сущность, которая абстрагирована от создания/разрушения собственного сеанса внутри приложения. и оперирующая пользовательскими полями.
Собственно, создание или разрушение сеанса может происходить и более сложным способом (через авторизацию по OpenID, иного провайдера и т.п.) - и потому я счел более корректным отделение этого функционала (пусть и, бесспорно, связанного с пользователем) от сущности пользователя. Ну а так как - я уже упомянул - я упрощения ради опустил сущность "пользовательская сессия" - наиболее просто было вынести два этих метода в базовый контроллер.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Bio man
Отправлено: 07 Июня, 2012 - 23:19:19
Post Id


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


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


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




Выделено в отдельную тему из темы "Урок №19 - Немного о паттернах"
Спасибо, суть вроде понял. И сразу появился вопрос.
Раз сессия это сущность, которая может принять множество обликов (как Вы упамянули OpenID, стд сессии итд) то логично создать сущность сессии.
Еще есть сущность пользователя, которая выполняет вход/выход итд, и которая агрегирует сущность сессии (точнее композирует, если можно так сказать) и работает с этой сущностью.
А контроллер User или любой другой уже будет работать с сущностью пользователя.

Правильно будет если я реализую такую логику?
 
 Top
EuGen Администратор
Отправлено: 07 Июня, 2012 - 23:21:46
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




Выделено в отдельную тему из темы "Урок №19 - Немного о паттернах"
Bio man
Не путайте модель и контроллер. Контроллер отражает логику приложения по работе с моделью.
По поводу сессии пользователя - да, сущность "пользовательская сессия", по-хорошему, должна быть создана и должным образом оформлена, иметь требуемые методы (в том числе, если это нужно - авторизацию посредством запрашиваемого провайдера). Посмотрите Zend - там, если не ошибаюсь, работа примерно в таком исполнении ведется.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Bio man
Отправлено: 07 Июня, 2012 - 23:51:53
Post Id


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


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


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




Выделено в отдельную тему из темы "Урок №19 - Немного о паттернах"
EuGen пишет:
Не путайте модель и контроллер.
Так я не путаю вроде.
Я о том, что есть модель User, которая работает с моделью Sessions и БД. А с этой моделью можно работать в любом контроллере.
Так будет корректно?

Может я сильно увлекся в этой теме, не совсем ведь по теме... Может перенести в отдельную?
 
 Top
caballero
Отправлено: 08 Июня, 2012 - 01:25:05
Post Id


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


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


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




Перенесено из темы "Урок №19 - Немного о паттернах"
Хммм... Сами хоть поняли чего понаписали?


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


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


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


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




Перенесено из темы "Урок №19 - Немного о паттернах"
caballero
да Улыбка а как по вашему надо?
 
 Top
sKaa
Отправлено: 08 Июня, 2012 - 04:31:29
Post Id



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


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


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

[+]


Перенесено из темы "Урок №19 - Немного о паттернах"
Bio man, ну имхо класс для работы с сессиями и базой это не модели а часть функционала приложения, ядро приложения скорей или его часть, а модель User взаимодействует с ними.
 
 Top
Bio man
Отправлено: 08 Июня, 2012 - 06:04:41
Post Id


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


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


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




Перенесено из темы "Урок №19 - Немного о паттернах"
sKaa как по мне так модели. только юзер посредник, который берет данные с БД и сессии...
 
 Top
caballero
Отправлено: 08 Июня, 2012 - 07:37:53
Post Id


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


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


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




Перенесено из темы "Урок №19 - Немного о паттернах"
Bio man пишет:
да а как по вашему надо?

надо что?
правильно сформулированный вопрос уже половина ответа.
В данном случае чтобы получить ответ нужно грамотно сформулировать задачу.

Bio man пишет:
как по мне так модели.

с этого и начни - сформулируй шо сие такое модель. Чтобы это не было чем то расплывчатым по которому непонятно что к нему относится.


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


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


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


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




Перенесено из темы "Урок №19 - Немного о паттернах"
В общем, следует прочитать вот от сюда, что бы понять с чего началось...
Правильно ли сущность пользователя вынести отдельно как модель и в нем реализовать методы login и logout, вместо того, что бы в базовом контроллере делать эти методы, как в примере.

Модель в моем понимании это красивая девушка и еще это класс (если говорить в ед. числе), который отвечает за ввод/вывод данных, например, в БД. Есть тонкие модели, что является просто массивом данных.
 
 Top
caballero
Отправлено: 08 Июня, 2012 - 10:44:17
Post Id


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


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


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




Перенесено из темы "Урок №19 - Немного о паттернах"
Цитата:
Правильно ли сущность пользователя вынести отдельно как модель и в нем реализовать методы login и logout, вместо того, что бы в базовом контроллере делать эти методы, как в примере.

Опять же что такое модель и что такое в данном контексте базовый контроллер.

Цитата:
Модель в моем понимании это красивая девушка и еще это класс (если говорить в ед. числе), который отвечает за ввод/вывод данных, например, в БД. Есть тонкие модели, что является просто массивом данных.

а еще под моделью можно понимать всю структуру данных проекта лежащую в БД. Как по мне было бы проще не употреблять термина модель вообще.


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


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


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


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




Перенесено из темы "Урок №19 - Немного о паттернах"
caballero пишет:
что такое в данном контексте базовый контроллер.
Тот что в примере Евгения. Посмотри самый первый пост на самой первой странице
 
 Top
sKaa
Отправлено: 08 Июня, 2012 - 13:50:41
Post Id



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


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


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

[+]


Перенесено из темы "Урок №19 - Немного о паттернах"
Смотреть лень, я так понимаю что это классическое :
PHP:
скопировать код в буфер обмена
  1.  
  2. abstract class Controller_Base {
  3.  
  4.   abstract public function Index();
  5.  
  6. }
  7.  

Который нужен чтобы не сильно захламлять сами контроллеры, ну и частично описать интерфейс избегая implements можно тоже ))) :
PHP:
скопировать код в буфер обмена
  1.  
  2. class Controller_Index extends Controller_Base {
  3.  
  4.    public function Index(){
  5.  
  6.    }
  7.  
  8. }
  9.  

(Добавление)
Bio man, походу ты слишком много гоняешь по теме, что и как лучше... Я так думаю, что если ты и сунешь какие-то операции с моделями ($User->LogIn(), $User->LogOut) внутрь контроллеров, то мало чего поменяется, разве, что в перспективе масштабирования приложения от таких приколов будет не очень гибким, но раз уж у тебя это дипломная работа или курсовик думаю и так сойдет...
Можно еще туда инициализацию сессий засунуть, какую нибудь страничку типа 404 итд..
 
 Top
Bio man
Отправлено: 08 Июня, 2012 - 15:23:53
Post Id


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


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


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




Перенесено из темы "Урок №19 - Немного о паттернах"
sKaa пишет:
походу ты слишком много гоняешь по теме, что и как лучше
то что мне кажется логичным для профессионалов является неправильным, и так всегда. С начала я хотел узнать зачем те 2 метода в родительском контроллере, от которого наследуются все контроллеры, затем захотел узнать как лучше и куда вынести эти методы, но некоторые придираются к техническим понятиям, таким как "модель", и толком ничего не советуют.

Потому я сделаю так: создам класс UserSession, класс User (модели) и в классах контроллерах буду проверять права, зашел ли юзер и работать с остальными данными User'а.
А в контроллере User создам 3 метода - login, logout и register.

Если есть аргументы почему так не делать то пишите, буду рад. Если же нету то и писать не стоит.
 
 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