Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Request-Response
chee  
 ۩  Дата
Цитировать сообщение

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



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

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




Решил сделать свою CMSку совместимой с данной архитектурой (тестирую всё под ReactPHP), что привело к некоторым непоняткам:

1. Во-первых, матчинг строки роутером и выдача результата, а также сохранения этого результата становятся неотделимыми от объекта запроса. Возникает вопрос, куда сохранять результаты работы роутера и как их доставать(результаты работы). На ум приходит, только такое, но это наделение объекта запроса лишней ответственностью.
2. Во-вторых, как правильно передавать объект запроса в нужные объекты приложения? С контроллерами(командами которые настраивают модельки) проблем нет, решение ложится на их архитектуру, но вот с контролерами вьюх получается дичь (смотреть 26, 30, 37 строку), приходится пробрасывать объект запроса, даже если он не будет использоваться.


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

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

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



орангутанг
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2004
Пользователь №: 36605
На форуме: 3 года, 9 месяцев, 15 дней
Карма: 111




если хочешь быть в тренде тогда тебе еще и PSR-7 до счатья полного)


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

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



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

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




bestxp, я хочу его заюзать, но не могу найти легковесной реализации стандарта, может знаешь?


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

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

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



орангутанг
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2004
Пользователь №: 36605
На форуме: 3 года, 9 месяцев, 15 дней
Карма: 111






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

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



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

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




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


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

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

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



орангутанг
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2004
Пользователь №: 36605
На форуме: 3 года, 9 месяцев, 15 дней
Карма: 111






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

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



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

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




Короче понятно, по данной теме или монструозные решения или слишком влияющие на архитектуру реализации, пока что не буду реализовывать PSR-7, оставлю на будущее. Хотя еще надо попробовать https://github.com/zendframework/zend-diactoros

На счет темы с роутером посмотрел как у симфони, наверно сделаю также, буду результат сеттить в объект запроса.

По второму пункту, то как сделать?


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

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

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



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

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




Заюзал zend-diactors, вроде бы легонький и функциональный.

Вот index.php каким стал, твину больше не к чему прикопаться, нет двояких вормулировок laugh.gif

Сейчас вот думаю над поддержкой middleware, благо у меня экшены это паттерн команды, переписывать особо ничено не нужно будет biggrin.gif

Так-то технология мощная, но сложная для рядового PHPшника. Я когда Psr-7 увидел не вдуплял вообще зачем это, а то что $request не мутабелен мне вообще взрывало мозг. А как заюзал сразу понял, почему так.


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

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

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



орангутанг
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2004
Пользователь №: 36605
На форуме: 3 года, 9 месяцев, 15 дней
Карма: 111




Цитата (chee @ 29.04.2016 - 11:11)
Заюзал zend-diactors, вроде бы легонький и функциональный.

Вот index.php каким стал, твину больше не к чему прикопаться, нет двояких вормулировок laugh.gif

Сейчас вот думаю над поддержкой middleware, благо у меня экшены это паттерн команды, переписывать особо ничено не нужно будет biggrin.gif

Так-то технология мощная, но сложная для рядового PHPшника. Я когда Psr-7 увидел не вдуплял вообще зачем это, а то что $request не мутабелен мне вообще взрывало мозг. А как заюзал сразу понял, почему так.

ну верный подход)) как можно менять данные которые пришли))) так что мне нравиться идея immutable + интерфейсы) а реализация уже за каждым своя стоит)


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

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



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

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




Заюзал у себя middleware по типу zend-expressive, то есть потенциально мои middleware буду совместимы с их. Результаты просты: архитектура стала гибче, класс роутинга и приложений перенесены в middleware, а приложение в итоге запускает только middleware runner. Осталось только два не решеных вопроса, middleware для сессий, так как стандартные сессии не могут в reactphp, ну и basePath для роутинга.


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

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

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



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15559
Пользователь №: 6543
На форуме: 8 лет, 2 месяца
Карма: 299

Трезвый :
5 лет, 11 месяцев, 10 дней


Цитата (chee @ 29.04.2016 - 07:11)
Вот index.php каким стал, твину больше не к чему прикопаться, нет двояких вормулировок

Ну так то да :) Мне только не понятно, зачем ты упорно тащишь echo в индекс... Дело вкуса конечно, но мне кажется так солиднее чтоли:
$response->sendContent();
ну или что-то в этом духе.


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

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

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



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

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




twin, потому что прятать это дело в классах бесполезно, ну и я не занимался менеджементом ответа так подробно, что бы решать где и как будет ответ от приложения писаться в выходной поток. Сейчас меня больше волнует, как написать сессии и на сколько это будет безопасно.


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

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

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



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15559
Пользователь №: 6543
На форуме: 8 лет, 2 месяца
Карма: 299

Трезвый :
5 лет, 11 месяцев, 10 дней


Цитата (chee @ 2.05.2016 - 15:23)
twin, потому что прятать это дело в классах бесполезно, ну и я не занимался менеджементом ответа так подробно, что бы решать где и как будет ответ от приложения писаться в выходной поток.
Так в том то все и дело, что у тебя недосказанность какая то, если не сказать больше - неоднозначность, осталась.

Ведь что такое echo, это по сути выброс строки в поток. Что содержит эта строка? Если возникнет ситуация, что в поток выводить ничего не нужно, ты все равно выбрасывешь пустую строку. Полагаясь на заголовки сервера.

А они могут быть сформированы по разному. Те же кукисы к примеру, над которыми ты сейчас греешь голову. Или это будет 404, или text/plain и так далее. Где они? Где их искать?

Когда строка выглядит так:
$response->send();
ясно и понятно - отправлен ответ. Сформированный и полностью. А echo... Набор сисмволов, строка, не более того.

Мельком глянул PSR-7, прикольно, надо разобраться на досуге. Но я не увидел там, что нужно выкинуть клиенту только тело. Это, как я понял, стандарт формирования запроса и ответа.

Вобщем как то неубедительно и недосказанно смотрится твой индекс.


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

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

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



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

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




Цитата (twin @ 2.05.2016 - 20:32)
Если возникнет ситуация, что в поток выводить ничего не нужно, ты все равно выбрасывешь пустую строку. Полагаясь на заголовки сервера.

да, скину в поток ничего
Цитата (twin @ 2.05.2016 - 20:32)
А они могут быть сформированы по разному. Те же кукисы к примеру, над которыми ты сейчас греешь голову. Или это будет 404, или text/plain и так далее. Где они? Где их искать?

Цитата (chee @ 2.05.2016 - 19:23)
я не занимался менеджементом ответа так подробно

то есть отправку заголовков надо делать, но она по сути тоже будет в index.php


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

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

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

Опции темы Ответ в темуСоздание новой темыСоздание опроса