nia / requestresponse-http
HTTP环境中的请求响应模式的实现。
这个软件包的官方仓库似乎已消失,因此该软件包已被冻结。
1.2.0
2018-04-25 12:47 UTC
Requires
- php: >=7.0.0
- nia/requestresponse: *
This package is not auto-updated.
Last update: 2022-03-10 12:36:23 UTC
README
HTTP环境中的请求响应模式的实现。
安装
使用Composer要求此软件包。
composer require nia/requestresponse-http
测试
要运行单元测试,请使用以下命令
$ cd /path/to/nia/component/
$ phpunit --bootstrap=vendor/autoload.php tests/
如何使用
以下示例展示了如何使用HTTP请求响应组件进行常见的index.php
用例。对于路由和展示,可以使用nia/routing
和nia/presenter
组件。
<?php // file: www/index.php use Nia\RequestResponse\Http\HttpRequest; use Nia\RequestResponse\Http\HttpResponseInterface; require_once __DIR__ . '/../vendor/autoload.php'; $stream = fopen('php://input', 'r'); $request = new HttpRequest($_SERVER, $_GET, $_POST, $_COOKIE, $_FILES, $stream); // [...] // // routing: // [...] // controller/presenter: // $response = $request->createResponse(); // $response->set<XYZ>(...); // // [...] $response = $request->createResponse(); /* @var $response HttpResponseInterface */ $header = $response->getHeader(); // add content type if not set. if (! $header->has('Content-Type')) { $header->set('Content-Type', 'text/html; charset=utf-8'); } // add content length if not set. if (! $header->has('Content-Length')) { $header->set('Content-Length', (string) strlen($response->getContent())); } // send headers to client. foreach ($header as $header => $value) { header($header . ': ' . $value); } // send cookies to client. foreach ($response->getCookies() as $cookie) { $name = $cookie->getName(); $value = $cookie->getValue(); $expire = $cookie->getExpire()->getTimestamp() - (new DateTime())->getTimestamp(); $path = $cookie->getPath(); setcookie($name, $value, $expire, $path); } // send the response. http_response_code($response->getStatusCode()); echo $response->getContent(); // close stream. fclose($stream);