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
Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010 Откуда: Даугавпилс, Латвия
Помог: 52 раз(а)
Выделено в отдельную тему из темы "Урок №19 - Немного о паттернах" Скажите, зачем выносить loginUser() и logoutUser() в базовый класс контроллера? Просто поглядываю на код как на пример и мне не понятно зачем это. Не будет ли лучше сделать это в контроллере User?
EuGen
Отправлено: 07 Июня, 2012 - 23:05:01
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Выделено в отдельную тему из темы "Урок №19 - Немного о паттернах" Вопрос резонный. И ответ на него - безусловно, спорен. Приведу аргументы, которые были приняты мной при разработке архитектуры.
Логика, закладываемая в приложение - то, что сущность "Пользователь" - не участвует в создании своей сессии внутри приложения (так как сессия пользователя - это, строго говоря, вообще отдельная сущность, но в рамках примера она опущена для простоты), и, аналогично, в разрушении своей сессии. Иными словами - пользователь здесь это скорее сущность, которая абстрагирована от создания/разрушения собственного сеанса внутри приложения. и оперирующая пользовательскими полями.
Собственно, создание или разрушение сеанса может происходить и более сложным способом (через авторизацию по OpenID, иного провайдера и т.п.) - и потому я счел более корректным отделение этого функционала (пусть и, бесспорно, связанного с пользователем) от сущности пользователя. Ну а так как - я уже упомянул - я упрощения ради опустил сущность "пользовательская сессия" - наиболее просто было вынести два этих метода в базовый контроллер.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Bio man
Отправлено: 07 Июня, 2012 - 23:19:19
Постоянный участник
Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010 Откуда: Даугавпилс, Латвия
Помог: 52 раз(а)
Выделено в отдельную тему из темы "Урок №19 - Немного о паттернах" Спасибо, суть вроде понял. И сразу появился вопрос.
Раз сессия это сущность, которая может принять множество обликов (как Вы упамянули OpenID, стд сессии итд) то логично создать сущность сессии.
Еще есть сущность пользователя, которая выполняет вход/выход итд, и которая агрегирует сущность сессии (точнее композирует, если можно так сказать) и работает с этой сущностью.
А контроллер User или любой другой уже будет работать с сущностью пользователя.
Правильно будет если я реализую такую логику?
EuGen
Отправлено: 07 Июня, 2012 - 23:21:46
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Выделено в отдельную тему из темы "Урок №19 - Немного о паттернах" Bio man
Не путайте модель и контроллер. Контроллер отражает логику приложения по работе с моделью.
По поводу сессии пользователя - да, сущность "пользовательская сессия", по-хорошему, должна быть создана и должным образом оформлена, иметь требуемые методы (в том числе, если это нужно - авторизацию посредством запрашиваемого провайдера). Посмотрите Zend - там, если не ошибаюсь, работа примерно в таком исполнении ведется.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Bio man
Отправлено: 07 Июня, 2012 - 23:51:53
Постоянный участник
Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010 Откуда: Даугавпилс, Латвия
Так я не путаю вроде.
Я о том, что есть модель User, которая работает с моделью Sessions и БД. А с этой моделью можно работать в любом контроллере.
Так будет корректно?
Может я сильно увлекся в этой теме, не совсем ведь по теме... Может перенести в отдельную?
caballero
Отправлено: 08 Июня, 2012 - 01:25:05
Активный участник
Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011 Откуда: Харьков
Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011 Откуда: Россия г. Нижний Новгород
Помог: 25 раз(а)
[+]
Перенесено из темы "Урок №19 - Немного о паттернах" Bio man, ну имхо класс для работы с сессиями и базой это не модели а часть функционала приложения, ядро приложения скорей или его часть, а модель User взаимодействует с ними.
Bio man
Отправлено: 08 Июня, 2012 - 06:04:41
Постоянный участник
Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010 Откуда: Даугавпилс, Латвия
Помог: 52 раз(а)
Перенесено из темы "Урок №19 - Немного о паттернах" sKaa как по мне так модели. только юзер посредник, который берет данные с БД и сессии...
caballero
Отправлено: 08 Июня, 2012 - 07:37:53
Активный участник
Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011 Откуда: Харьков
Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010 Откуда: Даугавпилс, Латвия
Помог: 52 раз(а)
Перенесено из темы "Урок №19 - Немного о паттернах" В общем, следует прочитать вот от сюда, что бы понять с чего началось...
Правильно ли сущность пользователя вынести отдельно как модель и в нем реализовать методы login и logout, вместо того, что бы в базовом контроллере делать эти методы, как в примере.
Модель в моем понимании это красивая девушка и еще это класс (если говорить в ед. числе), который отвечает за ввод/вывод данных, например, в БД. Есть тонкие модели, что является просто массивом данных.
caballero
Отправлено: 08 Июня, 2012 - 10:44:17
Активный участник
Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011 Откуда: Харьков
Правильно ли сущность пользователя вынести отдельно как модель и в нем реализовать методы login и logout, вместо того, что бы в базовом контроллере делать эти методы, как в примере.
Опять же что такое модель и что такое в данном контексте базовый контроллер.
Цитата:
Модель в моем понимании это красивая девушка и еще это класс (если говорить в ед. числе), который отвечает за ввод/вывод данных, например, в БД. Есть тонкие модели, что является просто массивом данных.
а еще под моделью можно понимать всю структуру данных проекта лежащую в БД. Как по мне было бы проще не употреблять термина модель вообще.
(Добавление) Bio man, походу ты слишком много гоняешь по теме, что и как лучше... Я так думаю, что если ты и сунешь какие-то операции с моделями ($User->LogIn(), $User->LogOut) внутрь контроллеров, то мало чего поменяется, разве, что в перспективе масштабирования приложения от таких приколов будет не очень гибким, но раз уж у тебя это дипломная работа или курсовик думаю и так сойдет...
Можно еще туда инициализацию сессий засунуть, какую нибудь страничку типа 404 итд..
Bio man
Отправлено: 08 Июня, 2012 - 15:23:53
Постоянный участник
Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010 Откуда: Даугавпилс, Латвия
походу ты слишком много гоняешь по теме, что и как лучше
то что мне кажется логичным для профессионалов является неправильным, и так всегда. С начала я хотел узнать зачем те 2 метода в родительском контроллере, от которого наследуются все контроллеры, затем захотел узнать как лучше и куда вынести эти методы, но некоторые придираются к техническим понятиям, таким как "модель", и толком ничего не советуют.
Потому я сделаю так: создам класс UserSession, класс User (модели) и в классах контроллерах буду проверять права, зашел ли юзер и работать с остальными данными User'а.
А в контроллере User создам 3 метода - login, logout и register.
Если есть аргументы почему так не делать то пишите, буду рад. Если же нету то и писать не стоит.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.