fol / http
v6.0.2
2015-03-23 20:22 UTC
Requires
- php: >=5.5.0
- fol/core: *
README
PHP 5.5 的 Http 库。尽管它位于 FOL 项目中,但可以独立使用。
示例
基本使用
use Fol\Http\Request; use Fol\Http\Response; use Fol\Http\MiddlewareStack; use Fol\Http\Middlewares; //Inicia unha instancia de MiddlewareStack $stack = new MiddlewareStack(); //Engade alguns middlewares $stack->push(new Middlewares\Languages()); $stack->push(new Middlewares\Ips()); $stack->push(function ($request, $response, $stack) { $response->getBody()->write('Hello world'); $stack->next(); }); $stack->push(function ($request, $response, $stack) { $response->getBody()->setStatus(200); $stack->next(); }); //Executaos $response = $stack->run(new Request('http://domain.com')); //Envía a resposta ao navegador $response->send();
使用会话和路由
会话和路由就像可以添加到 MiddlewareStack 的其他 "中间件" 一样。
use Fol\Http\Request; use Fol\Http\Response; use Fol\Http\MiddlewareStack; use Fol\Http\Sessions\Native; use Fol\Http\Routes\Router; //Inicia o router $router = new Router(); $router->map([ 'index' => [ 'path' => '/', 'target' => function ($request, $response) { $response->getBody()->write('Esta é a portada'); } ], 'about' => [ 'path' => '/about', 'target' => function ($request, $response) { $session = $request->attributes->get('SESSION'); $response->getBody()->write('Ola, ti eres '.$session->get('username')); } ] ]); //Inicia o MiddlewareStack $stack = new MiddlewareStack(); //Engade a middleware da sesión $stack->push(new Native()); //E tamén a do router $stack->push($router); //Executa $response = $stack->run(new Request('http://domain.com')); //Envía a resposta $response->send();
类
Request
处理 HTTP 请求的数据
use Fol\Http\Request; //Crear dende as variables globais ($_SERVER, $_FILES, etc) $request = Request::createFromGlobals(); //Ou podes crear a túa petición personalizada $request = new Request('http://blog.com/?page=2', 'GET', ['Accept' => 'text/html']); //Obxecto para acceder aos datos da url (host, path, query, fragment, etc) $request->url; //Accede á "query" (alias de $request->url->query): $request->query; //Xestiona cabeceiras $request->headers //Xestiona cookies $request->cookies //Xestiona os datos parseados do body $request->data //Xestiona os arquivos subidos $request->files //Devolve o body (streamable) $body = $response->getBody();
Response
use Fol\Http\Response; //Crea unha resposta $response = new Response('Hello world', 200, ['Content-Type' => 'text/html']); //Xestiona as cabeceiras $request->headers //Xestiona as cookies $request->cookies //Devolve o body (streamable) $body = $response->getBody();
MiddlewareStack
处理整个 HTTP 请求/响应周期的所有中间件。为了更好地理解中间件的概念,我推荐阅读这篇文章
中间件
此库自带一系列默认中间件,具有最常用的功能。
- BaseUrl: 有助于定义默认的基础 URL,该 URL 会被用于 cookie 和路由。要访问 URL:
$request->attributes->get('BASE_URL')
- BasicAuthentication: 用于创建 HTTP 基本认证
- DigestAuthentication: 用于创建 "digest" 类型的 HTTP 认证
- Formats: 用于自动检测和规范化请求格式(json、txt、html、png 等)。要访问格式:
$request->attributes->get('FORMAT')
- Ips: 检测客户端的 IP 地址。要访问它:
$request->attributes->get('IP')
- Languages: 检测客户端的首选语言。要访问它:
$request->attributes->get('LANGUAGE')
会话
提供了一个简单的接口用于处理会话。要访问会话: $request->attributes->get('SESSION')
。有两种类型的会话:
- Native(使用 PHP 的原生实现)
- Session(用于处理测试会话)
路由器
提供了一个简单的 MVC 路由系统。要访问路由: $request->attributes->get('ROUTE')