[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: ООП. Философия авторизации
Страницы: 1, 2, 3, 4, 5, 6
GET
Цитата
все данные собираються в роутере (у меня), и передаються как отдельный массив дальше. А не юзаем, чтоб не было потом искажения данных



Зачем передовать, то чего нет, инициализировать переменные, которые не нужны? Откуда возьмутся искаженные данные если достаточно просто внимательно продумать логику работы?
user posted image




_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Zzepish
GET
суперглобальные массивы есть в любом случае!
Данные исказяться если какой-то мудак, который будет писать модуль, будет юзать суперглобальные переменные (изменять их).
GET
Цитата
будет юзать суперглобальные переменные (изменять их).

понятно

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Zzepish
GET
Я страдаю паранойей biggrin.gif лучше все сделаю гуд, чем потом буду фигней страдать)
Ron
Цитата (Zzepish @ 22.04.2016 - 20:53)
который будет писать модуль, будет юзать суперглобальные переменные (изменять их).

От дураков все-равно не защитишься. Ты сейчас обезопасишь суперглобальные, а он придумает нечто такое, которое нормальным людям даже в бреду не придет. И всё испортит. Так что забей. Отдал код - отдал ответственность за него. Или недопускай чудаков или пусть делают что хотят тогда.
Arh
Zzepish
Ты на правильном пути, только тут фишка не в защите супер глобальных массивов, а в их инъекциях.



_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
chee
Цитата (Arh @ 22.04.2016 - 22:58)
Ты на правильном пути, только тут фишка не в защите супер глобальных массивов, а в их инъекциях.

Наркотики? Да в них есть какая-то фишка biggrin.gif

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Ron
Цитата (Zzepish @ 22.04.2016 - 15:20)
$router = new MainRouter($_POST, $_GET, $_SESSION, $_COOKIE, $_SERVER, $_FILES);

Это нормально?

Я бы сформировал объект request и session. Их ненадо объединять, сущности совершенно разные. Инициализировать вместе с ядром при наличии в них данных. Дальше дергать из утилитного (статического) класса в любом месте системы.

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

Получим "транспортный" объект с данными, вместо массива. В нем можно производить дополнительную обработку через геттеры и сеттеры. Может натравливать сам на себя валидатор и определять свое состояние в любой момент времени. Удобно пускать такую штуку в путешествие через бизнес-логику. wink.gif

Zzepish
Ron
Цитата
От дураков все-равно не защитишься. Ты сейчас обезопасишь суперглобальные, а он придумает нечто такое, которое нормальным людям даже в бреду не придет. И всё испортит. Так что забей. Отдал код - отдал ответственность за него. Или недопускай чудаков или пусть делают что хотят тогда.

Я хочу изначально научиться писать правильный и максимально безопасный код (насколько смогу))) Это я еще учусь) а учиться надо правильно)

Arh
Инъкции? Хм. Интересный термин для суперглобальных. надо погуглить

Ron

Цитата
Вообще считаю что у каждой формы или правильнее сказать каждого запроса, должен быть свой объект данных. Его заполнять при непустых параметрах и натравливать валидатор. Таким образом к моменту запуска контроллера оъект с данными будет обладать не только полученной информацией, но и знать валиден он или нет. Ну или тоже самое, но заполнять упомянутый объект из контроллера с помощью утилитного класса, передав ему ссылку. Он заполнит и отвалидирует.

Получим "транспортный" объект с данными, вместо массива. В нем можно производить дополнительную обработку через геттеры и сеттеры. Может натравливать сам на себя валидатор и определять свое состояние в любой момент времени. Удобно пускать такую штуку в путешествие через бизнес-логику.

Интересная тема! У меня это все сохраняеться в массив. Тоже удобно пускать в бизнес-логику, но у меня ощущение, что это больше процедурный подход)
Arh
Zzepish
Цитата
Инъкции? Хм. Интересный термин для суперглобальных. надо погуглить

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

Если какой то контроллер, какого то приложения выдаёт результат на основе допустим GET, обращаясь к нему на прямую, то будет проблематично его вызвать в другом приложении с нужным значением в GET.
Допустим
$old = $_GET['key'];
$_GET['key'] = 'нужное значение';
$Obj = new Controller();
$Obj->result();
$_GET['key'] = $old;

//vs

$Obj = new Controller([
'key' => 'нужное значение'
]);
$Obj->result();


_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
chee
Arh, то что ты показал, это не внедрение зависимостей, это передача массива в конструктор. Внедрение инъекции это ООП фишка.


$request = new Request($_POST, $_GET);
$controller = new Controller($request);


Вот это внедрение зависимостей через конструктор

И да, с юмором у тебя всё плохо :lol:

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Arh
chee
А у тебя это просто передача объекта в конструктор.
Я показал почему не стоит на прямую обращаться к глобальным массивам и что это никак не связанно с их защитой.

В моём примере Controller зависит от значения ключа, в твоём от какого то лишнего посредника, который это значение предоставляет.

Эти зависимости можно определить так:
$request = new Request($_POST, ['key' => 'нужное значение']);
$controller = new Controller($request->get);

так

$_GET['key'] = 'нужное значение';
$Obj = new Controller();

так
$Obj = new Controller(['key' => 'нужное значение']); 

или еще 100500 разных способов в зависимости от логики контроллера

chee
Цитата
И да, с юмором у тебя всё плохо :lol:

У тебя такая репутация тут, что сложно воспринимать с позитивом.

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
chee
Цитата (Arh @ 23.04.2016 - 12:00)
просто передача объекта в конструктор.

Нет, этот будет именно внедрение зависимости через конструктор, путем передачи объекта в конструктор. Внедрение зависимостей это именно объектная фишка, так как объект может быть программным компонентом, который инкапсулирует в себе логику и представляет интерфейс для работы с ней. Массив это просто массив, это просто данные.

Цитата (Arh @ 23.04.2016 - 12:00)
У тебя такая репутация тут, что сложно воспринимать с позитивом.

Какая у меня репутация?

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Arh
chee
Цитата
Нет, этот будет именно внедрение зависимости через конструктор, путем передачи объекта в конструктор. Внедрение зависимостей это именно объектная фишка, так как объект может быть программным компонентом, который инкапсулирует в себе логику и представляет интерфейс для работы с ней. Массив это просто массив, это просто данные.

Я понимаю к чему ты клонишь, но ты слишком загоняешься в рамки ООП.
Допустим есть общий класс, для работы с комментариями. Он зависит от значения адресной строки, так он определяет какие комментарии показать на текущей странице.
$Comment = new Comment($_REGUEST['uri']);

Если бы он в контроллере получал адрес, то зависел бы от $_REGUEST и было бы проблематично вызвать этот класс внутри приложения на другой странице. Типа /news/id/1 это страница новости, а еще можно запросить комментарии аяксом прямо в списке новостей /news/last, /news/top.
Так вот $_REGUEST['uri'] это зависимость, это не массив и не объект, это вообще строка.
То есть класс зависит от данных, неважно какой у них тип, в данном случает от данных типа string.
Да и вообще классы тут не причём, обычная функция зависит от параметров переданных в неё.
Инъекция это введение, внедрение.
По этому: "тут фишка не в защите супер глобальных массивов, а в их инъекциях."

Цитата
Какая у меня репутация?

Эгоцентричная

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
casper - gg
Цитата (Arh @ 23.04.2016 - 13:30)
Эгоцентричная

та не, у него репутация, что он постоянно что-то спорит с twin'ом. И по-делу и не по-делу.

Кстати, я то же использую "внедрение зависимостей" вот такое:
Цитата (chee @ 23.04.2016 - 11:15)
$request = new Request($_POST, $_GET);
$controller = new Controller($request);


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


user posted image
Быстрый ответ:

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