[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: ООП. Философия авторизации
Страницы: 1, 2, 3, 4, 5, 6
Zzepish
Фишка такая: если я правильно понял ооп с MVC - мы не работаем с супер глобальными массивами ($_POS, $_GET, etc.). Но при авторизации пользователя мне нужно задать $_SESSION['user_id']. Чтоб он идентифицировал авторизировавшегося пользователя. Теперь вопрос: корректно ли в классе будет установить эту переменную, или есть другой вариант?
S.Chushkin
Цитата (Zzepish @ 22.04.2016 - 14:39)
не работаем с супер глобальными массивами
Zzepish
S.Chushkin
все данные собираються в роутере (у меня), и передаються как отдельный массив дальше. А не юзаем, чтоб не было потом искажения данных
S.Chushkin
А, 100%-й ООП...
Ну так сделайте объект Session вместо встроенной возможности. В чём проблема то?

_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
S.Chushkin
>> А не юзаем, чтоб не было потом искажения данных

Вообще-то $_POST, $_GET и т.п. должны использоваться только на чтение, поэтому никаких "искажений" там не должно быть в принципе.

_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
bestxp
Ну в ооп плане у тебя есть некая допусти

class UserAuth {
public function __construct(ISessionStorage $storage){}

}


interface ISessionStorage {
public function set($key, $value);
public function get($key);
public function has($key);
public function remove($key);
}


а с чем работает класс имплементирующий ISessionStorage уже не важно) бд + куки или $_SESSION и тд)

внутри UserAuth ты обращаешься уже к методам хранилища)) а с чем он работает уже не важно))) с $_SESSION или вообще в бд хранит или в файле или в редисе)


Цитата
Вообще-то $_POST, $_GET и т.п. должны использоваться только на чтение, поэтому никаких "искажений" там не должно быть в принципе.


Должны, но не обязаны, так как лучше закрыть оберткой чем потом от другого программиста получить подарок
Zzepish
S.Chushkin
Ну да biggrin.gif Я ж хочу познать саму идеологию)
Ага. Т.е. Объект SESSION может на прямую работать с супер глобальной переменной SESSION? И это будет корректно с точки зрения идеологии?)
chee
Цитата (S.Chushkin @ 22.04.2016 - 14:57)
Ну так сделайте объект Session вместо встроенной возможности. В чём проблема то?

+1

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Zzepish
S.Chushkin
мало ли! кто-то напишет модуль, или покапаеться в коде, запилит в чужом модуле искажение какое-нить . А так - идет защита от такого)
bestxp
ага! спасибо)
S.Chushkin
>> Теперь вопрос: корректно ли в классе будет установить эту переменную, или есть другой вариант?

Если "только ООП", то - нет.
Можно сделать оболочку над модулем сессий. Тут bestxp правильно сказал - что там внутри, по барабану. Извне это Объект.
Но в то же время, в ПХП нет 100% ООП, поэтому я бы допустил использование $_SESSION, если у Вас нет цели "100%-й ООП".


_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
S.Chushkin
Цитата (Zzepish @ 22.04.2016 - 15:05)
А так - идет защита от такого)

В ПХП нет "защиты от такого" - можно изменить всё что хочется sad.gif
Защита только одна, - большой толстой линейкой по рукам.

_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
Arh
Zzepish
Цитата
все данные собираються в роутере (у меня), и передаються как отдельный массив дальше.

Можно поинтересоваться какие данные входят в этот массив, в каком виде он приходит в приложение?

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Zzepish
S.Chushkin
Цитата
Если "только ООП", то - нет.
Можно сделать оболочку над модулем сессий. Тут bestxp правильно сказал - что там внутри, по барабану. Извне это Объект.
Но в то же время, в ПХП нет 100% ООП, поэтому я бы допустил использование $_SESSION, если у Вас нет цели "100%-й ООП".

тут вопрос идеологии :D я ж сейчас учусь, фактичеки. Хочу научиться писать правильно.
Насколько я понял - самый близкий идеологии ООП будет вариант с созданием Класса, для редактирования сессии.

Цитата
В ПХП нет "защиты от такого" - можно изменить всё что хочется
Защита только одна, - большой толстой линейкой по рукам.

Увы! Это так(

Arh

$router = new MainRouter($_POST, $_GET, $_SESSION, $_COOKIE, $_SERVER, $_FILES);




public function __construct($POST, $GET, $SESSION, $COOKIE, $SERVER, $FILES)
{
$this->inputData = compact('POST', 'GET', 'SESSION', 'COOKIE', 'SERVER', 'FILES');

$this->inputData['params'] = $routerData = $this->getRouterData($this->inputData['GET']);

Везде они фигурируют как $inputData
S.Chushkin
Цитата (Zzepish @ 22.04.2016 - 15:20)
Насколько я понял - самый близкий идеологии ООП будет вариант с созданием Класса, для редактирования сессии.

Правильно будет - объект "Сессия" со своими свойствами и методами. А уж что он делает, дело десятое. В частности, может изменять параметры сессии.
Класс это просто декларация/описание объекта.

_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
casper - gg
Цитата (Zzepish @ 22.04.2016 - 15:14)
тут вопрос идеологии biggrin.gif я ж сейчас учусь, фактичеки. Хочу научиться писать правильно.

нету четких идеологий, по крайней мере мне не известны они. Есть логические понятные решения разных ситуаций, а есть запутанные, по логике, по логике вот само верно выглядит:
Цитата (S.Chushkin @ 22.04.2016 - 15:53)
Правильно будет - объект "Сессия" со своими свойствами и методами. А уж что он делает, дело десятое. В частности, может изменять параметры сессии.

у меня реализовано проще, - в нужных классах просто есть метод с названием созвучным с сессией, типа setSession или getSession и т.п. Неохота писать целый класс сессий и продумывать его возможные применения. Само просто, - добавить локально в нужный класс нужный метод.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.