[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: PSR-7
Страницы: 1, 2, 3, 4, 5, 6, 7
twin
Цитата (Arh @ 21.12.2017 - 20:33)
где "get started" для чайников? ява за 7 дней?

А вот: :D
    $request  = new Request();
$response = new Response();

// Получаем парамер из GET (это интегрировано у меня)
$name = $request->getAttribute('name');

// Тут твое приложение формирует контент
ob_start();
echo "Hello, $name";
$content = ob_get_clean();

// Записываем контент в тело сообщения (поток)
$body = $response->getBody();
$body->write($content);
// Можно сразу отправить
echo $body;
// Но это не по феншую )))

// По хорошему нужно вернуть в response

$response = $response->withBody($body);
// А дальше дело техники. Можно с ним че хош творить.

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

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

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

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

user posted image
Arh
twin
Цитата
С отправкой отдельная тема, там заголовки нужно отправить, и поток частями можно. Если интересно, распишу.

Интересно.
"и поток частями можно", а можно и не частями? Это плагин должен решать как оправлять или какой то главный контроллер фреймворка?

Остальное надо переварить, не отвечать с горяча)

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
twin
Цитата (Arh @ 22.12.2017 - 07:29)
"и поток частями можно", а можно и не частями?
"не частями" я показал. Фишка в том, что $response->getBody() возвращает поток в виде объекта. Что с ним делать, решать тебе. Но если обратиться к нему, как к строке, то там есть __toString(), и он вернет весь поток в виде строки. Что я и показал.

По хорошему в этом классе есть много интересного. И отправлять ответ можно частями, примерно так.

Заголовки отправляются как то так.

Разумеется это должно делать твое приложение, PSR-7 регламентирует сами объекты, а как с ними обойтись - воля вольного. В браузер отправить или в мидлвар какой smile.gif

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

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

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

user posted image
Arh
twin
Цитата
Суть PSR-7 в том, что в нем есть универсальные методы, которые быть обязаны. Кроме того, они должны подчиняться принципу Лисков. А то, что ты навесишь там своего, это ни кому кроме тебя не интересно, это будет использоваться только в твоем приложении. Ну скажем какие то вспомогательные методы. О них ни кто знать не должен и на них внешняя логика задействована быть не может. Для себя - хоть вагон.

Смотри. У вордпреса метод контроллера плагина принимает на вход только $response, а $request получает из реестра допустим.

То есть он вот так запускает свои плагины:

$pluginList = ['дофига плагинов'];
foreach ($pluginList as $plugin) {

$response = $plugin->indexAction($response);

}

echo $response; // или как там правильно с потоками, я пока не въехал


Допустим друпал передаёт request/response:

$request = new Request();
$pluginList = ['дофига плагинов'];
foreach ($pluginList as $plugin) {

$response = $plugin->indexAction($request, $response);

}

echo $response; // или как там правильно с потоками, я пока не въехал


А я передаю http:

$http = new Http(Request, Response);
$pluginList = ['дофига плагинов'];
foreach ($pluginList as $plugin) {

$http = $plugin->indexAction($http);

}

echo $http->response; // или как там правильно с потоками, я пока не въехал


Так вот. Во первых друпал не сможет запустить плагин вордпреса потому что друпал первым параметром передаст $request, а плагин вордпреса принимает $response.
Ну ладно, это можно как то настроить. Но фреймворки должны поддерживать такой функционал, как бы предусматривать что аргументы могут быть поменяны местами. Что собственно уже не кроссплатформеность.

Или обратная ситуация, ставим плагин от друпала на вордпресс, а плагин друпала ожидает получить $request, а вордпресс передаёт $request только через реестр. Плагин друпала во первых ничего не знает о этом реестре, как и остальных зависимостях, но это ладно, зависимости можно подтянуть с половиной друпала, но суть в том что интерфейс метода другой, и тут в любом случае придётся переписать либо плагин, либо вордпресс.

А в моём случае вообще http на вход требуется, и вернуть плагин должен http объект, а не response как у других.

И опять же, ты сделал свою реализацию psr-7, со своими методами, я сейчас начну её использовать. Мои плагины будут юзать твои самодельные методы.
Потом я захочу поставить свой плагин на другую систему, а там реализация chee psr-7, без твоих методов.
То есть в мой плагин придёт request/respons без методов, которые используются в этом плагине.

В итоге ну вообще никак не кроссплатформенность.

Я понимаю если бы был psr-интерфейс для методов контроллеров, а на него можно было бы наложить psr-7.
Тогда была бы хотя бы односторонняя поддержка. Например друпал использует чистый psr-7, а ты свой.
Ты к себе можешь ставить плагины друпала, а он твои не может. То есть даже тут нет никакой кроссплатформенности о которой так пишут в статьях по psr-7.

Получается "кроссплатформенность" относится только к разработчику, типа раньше он работал с симфони, теперь с yii, а там похожие реализации psr-7, так что без проблем. Но и тут нифига, потому что во первых у yii может быть сильно мутированная psr-7, к которой ты привыкнешь, а на другую силно мутированную psr-7 от симфони ты будешь плеваться. Во вторых есть ещё наверно миллионов 7 других библиотек, которыми пользуются плагины.

В итоге я опять не понимаю как можно было подумать о совместимости, да ещё и статьи писать на эту тему. А ты именно про это и писал.

Цитата
Это довольно интересно и выгодно производителям различных плагинов и компонентов. Сейчас они пишутся под конкретную среду. Под Symfony, WordPress, Джумлу наконец. А если все будут юзать один стандарт, то плагины станут универсальными. А значит расширится рынок сбыта.

Они же продолжат писаться под конкретную среду, каждая среду по своему взаимодействует с плагинами. Друпал вообще через хуки взаимодействует.
И то что ты внутри хука получишь $psr7 = ServiceLocator::get('Request'); это разве сделает плагин универсальным?


_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Быстрый ответ:

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