[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Request-Response
chee
Решил сделать свою CMSку совместимой с данной архитектурой (тестирую всё под ReactPHP), что привело к некоторым непоняткам:

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

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
bestxp
если хочешь быть в тренде тогда тебе еще и PSR-7 до счатья полного)
chee
bestxp, я хочу его заюзать, но не могу найти легковесной реализации стандарта, может знаешь?


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

поковыряй их
http://www.slimframework.com/docs/concepts...ue-objects.html
chee
bestxp, Нужен компонент который полностью реализует этот стандарт, как это делает HttpFoundation, HttpFoundation неоправдано тяжел потому я его не расматриваю.

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
bestxp
https://packagist.org/packages/aura/router
chee
Короче понятно, по данной теме или монструозные решения или слишком влияющие на архитектуру реализации, пока что не буду реализовывать PSR-7, оставлю на будущее. Хотя еще надо попробовать https://github.com/zendframework/zend-diactoros

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

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

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

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

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

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

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
bestxp
Цитата (chee @ 29.04.2016 - 11:11)
Заюзал zend-diactors, вроде бы легонький и функциональный.

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

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

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

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

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
twin
Цитата (chee @ 29.04.2016 - 07:11)
Вот index.php каким стал, твину больше не к чему прикопаться, нет двояких вормулировок

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

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

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

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

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

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

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

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

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

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

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

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

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

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

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

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

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

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

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

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