Fol\Http
Biblioteca Http para PHP 5.5. A铆nda que esta dentro do proxecto FOL, p贸dese usar de xeito independente
Exemplos
Uso b谩sico
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();
Uso con sesi贸ns e rutas
As sesi贸ns e rutas son como outros "middlewares" que podes engadir ao 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();
Classes
Request
Xestiona os datos dunha petici贸n 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
Xestiona todos os middlewares en todo o ciclo petici贸n/resposta de http. Para entender mellor o concepto dos middlewares, recomendo ler este artigo
Middlewares
Esta biblioteca trae consigo unha serie de middlewares por defecto coas funcionalidades m谩is com煤ns:
-
BaseUrl: 脷til para definir por defecto unha url base, que se usar铆a tanto para cookies como para o router. Para acceder 谩 url:
$request->attributes->get('BASE_URL')
- BasicAuthentication: Para crear unha autentificaci贸n http b谩sica
- DigestAuthentication: Para crear unha autentificaci贸n http de tipo "digest"
-
Formats: Para detectar e normalizar automaticamente o formato da petici贸n (json, txt, html, png, etc). Para acceder ao formato:
$request->attributes->get('FORMAT')
-
Ips: Detecta a ip do cliente. Para acceder a ela:
$request->attributes->get('IP')
-
Languages: Detecta o idioma preferido polo cliente. Para acceder a el:
$request->attributes->get('LANGUAGE')
Sessions
Proporciona unha interface sinxela para traballar con sesi贸ns. Para acceder 谩 sesion: $request->attributes->get('SESSION')
. Hai dous tipos de sesi贸ns:
- Native (usa a implementaci贸n nativa de PHP)
- Session (para traballar con sesi贸ns de proba)
Router
Proporciona un sinxelo sistema de enrutamento para MVC. Para acceder 谩 ruta: $request->attributes->get('ROUTE')