Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (6) 1 [2] 3 4 ... Последняя » ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> ООП. Философия авторизации
GET  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



TERRAFORMING ENGINEER
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 3847
Пользователь №: 21196
На форуме: 6 лет, 9 месяцев, 8 дней
Карма: 87




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



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




--------------------
Не тот велик, кто не падал, а тот кто падал и поднимался.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Zzepish  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Аццкая хрень
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 5481
Пользователь №: 32538
На форуме: 4 года, 6 месяцев, 15 дней
Карма: 49




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


--------------------
Правда тоже ложь, но с иным углом.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
GET  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



TERRAFORMING ENGINEER
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 3847
Пользователь №: 21196
На форуме: 6 лет, 9 месяцев, 8 дней
Карма: 87




Цитата
будет юзать суперглобальные переменные (изменять их).

понятно


--------------------
Не тот велик, кто не падал, а тот кто падал и поднимался.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Zzepish  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Аццкая хрень
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 5481
Пользователь №: 32538
На форуме: 4 года, 6 месяцев, 15 дней
Карма: 49




GET
Я страдаю паранойей biggrin.gif лучше все сделаю гуд, чем потом буду фигней страдать)


--------------------
Правда тоже ложь, но с иным углом.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Ron  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1049
Пользователь №: 41686
На форуме: 1 год, 4 месяца, 2 дня
Карма: 14




Цитата (Zzepish @ 22.04.2016 - 20:53)
который будет писать модуль, будет юзать суперглобальные переменные (изменять их).

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


--------------------
Жду 5.11.2017
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Arh  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



146%
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2110
Пользователь №: 27172
На форуме: 5 лет, 8 месяцев, 9 дней
Карма: 70




Zzepish
Ты на правильном пути, только тут фишка не в защите супер глобальных массивов, а в их инъекциях.



--------------------
:)
PMСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
chee  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Сын полка
Сообщений: 1780
Пользователь №: 38654
На форуме: 2 года, 11 месяцев, 7 дней
Карма: 40




Цитата (Arh @ 22.04.2016 - 22:58)
Ты на правильном пути, только тут фишка не в защите супер глобальных массивов, а в их инъекциях.

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


--------------------
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации

Мой блог
PMПисьмо на e-mail пользователю
    -1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Ron  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1049
Пользователь №: 41686
На форуме: 1 год, 4 месяца, 2 дня
Карма: 14




Цитата (Zzepish @ 22.04.2016 - 15:20)
$router = new MainRouter($_POST, $_GET, $_SESSION, $_COOKIE, $_SERVER, $_FILES);

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

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

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

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



--------------------
Жду 5.11.2017
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Zzepish  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Аццкая хрень
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 5481
Пользователь №: 32538
На форуме: 4 года, 6 месяцев, 15 дней
Карма: 49




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

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

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

Ron

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

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

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


--------------------
Правда тоже ложь, но с иным углом.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Arh  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



146%
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2110
Пользователь №: 27172
На форуме: 5 лет, 8 месяцев, 9 дней
Карма: 70




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

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

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

//vs

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


--------------------
:)
PMСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
chee  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Сын полка
Сообщений: 1780
Пользователь №: 38654
На форуме: 2 года, 11 месяцев, 7 дней
Карма: 40




Arh, то что ты показал, это не внедрение зависимостей, это передача массива в конструктор. Внедрение инъекции это ООП фишка.


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


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

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


--------------------
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации

Мой блог
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Arh  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



146%
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2110
Пользователь №: 27172
На форуме: 5 лет, 8 месяцев, 9 дней
Карма: 70




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

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

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

так

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

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

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

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

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


--------------------
:)
PMСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
chee  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Сын полка
Сообщений: 1780
Пользователь №: 38654
На форуме: 2 года, 11 месяцев, 7 дней
Карма: 40




Цитата (Arh @ 23.04.2016 - 12:00)
просто передача объекта в конструктор.

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

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

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


--------------------
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации

Мой блог
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Arh  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



146%
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2110
Пользователь №: 27172
На форуме: 5 лет, 8 месяцев, 9 дней
Карма: 70




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

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

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

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

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


--------------------
:)
PMСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
casper - gg  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Абориген
*****

Профиль
Группа: Пользователь
Сообщений: 216
Пользователь №: 42190
На форуме: 1 год, 6 дней
Карма: 10




Цитата (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
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (6) 1 [2] 3 4 ... Последняя » Ответ в темуСоздание новой темыСоздание опроса