Search by

php-tool-kit / request

everton3x

Manipula requisições HTTP.

v1.0.0 2026-09-10 14:27 UTC

This package is auto-updated.

Last update: 2026-09-10 14:30:17 UTC


README

Licença: MIT

ptk/request é uma biblioteca PHP para manipular requisições HTTP de forma orientada a objetos.

Ela encapsula os dados das superglobais do PHP ($_GET, $_POST, $_COOKIE e $_SERVER) em objetos com interface padronizada, facilitando leitura, iteração e validação de dados de requisição.

Este pacote faz parte do PHP Tool Kit (PTK), um conjunto de bibliotecas para desenvolvimento em PHP.

Recursos

  • Acesso encapsulado e tipado aos dados de $_GET, $_POST, $_COOKIE e $_SERVER.
  • Propriedades da requisição expostas como atributos imutáveis (readonly) e tipados.
  • Validação integrada dos dados por meio do pacote php-tool-kit/validator.
  • Iteração fácil sobre os dados coletados (ArrayIterator).

Requisitos

Instalação

Instale via Composer:

composer require php-tool-kit/request

Uso básico

Acessando todas as informações da requisição

A classe Request agrupa os dados de $_GET, $_POST, $_COOKIE e $_SERVER em um único objeto:

<?php

use Ptk\Request\Request;

$request = new Request();

// Método HTTP da requisição (string|null)
echo $request->requestMethod;

// URI completa (string|null)
echo $request->requestUri;

// Indica se a requisição usa HTTPS (bool|null)
var_dump($request->https);

// Endereço IP do cliente (string|null)
echo $request->remoteAddr;

// Timestamp do início da requisição (DateTimeImmutable|null)
echo $request->requestTime?->format('d/m/Y H:i:s');

// Query string como array associativo (string|true por valor)
var_dump($request->queryString);

Trabalhando com os dados de GET, POST e COOKIE

As classes Get, Post e Cookie expõem os dados das superglobais correspondentes:

<?php

use Ptk\Request\Get;
use Ptk\Request\Post;
use Ptk\Request\Cookie;

$get = new Get();

// Recupera o valor de uma chave específica (ou null se não existir)
$page = $get->get('page');

// Itera sobre todos os parâmetros recebidos
foreach ($get->iterator() as $key => $value) {
    echo "{$key}: {$value}" . PHP_EOL;
}

Validação dos dados

Para validar os dados, informe um mapa associativo de validadores (Ptk\Validator\Validator), onde a chave é o nome do campo:

<?php

use Ptk\Request\Get;
use Ptk\Validator\Validator;

$validators = [
    'page' => new Validator(/* configuração do validador */),
    'q'    => new Validator(/* configuração do validador */),
];

$get = new Get();

$result = $get->validate($validators);

// O resultado contém, para cada campo, um array com o resultado da validação:
// - Campos sem validador associado recebem null.
var_dump($result);

Nota: chaves presentes nos dados, mas sem validador correspondente, retornam null. O método dispara uma RuntimeException caso um item do array de validadores não seja uma instância de Ptk\Validator\Validator.

Iteração

Todas as classes que estendem Data disponibilizam o método iterator(), que retorna um ArrayIterator permitindo uso direto em estruturas foreach:

<?php

use Ptk\Request\Cookie;

foreach ((new Cookie())->iterator() as $name => $value) {
    // processa cada cookie recebido
}

Estrutura das classes

Classe Descrição
Ptk\Request\Data Classe abstrata base. Fornece acesso (get()), iteração (iterator()) e validação (validate()) dos dados.
Ptk\Request\Get Encapsula $_GET.
Ptk\Request\Post Encapsula $_POST.
Ptk\Request\Cookie Encapsula $_COOKIE.
Ptk\Request\Request Encapsula a requisição completa, incluindo $_SERVER (método, protocolo, URI, cabeçalhos de autenticação etc.).

Documentação

A documentação completa está disponível em https://php-tool-kit.github.io/request/html/.

Desenvolvimento

Clone o repositório e instale as dependências:

git clone https://github.com/php-tool-kit/request.git
cd request
composer install

Scripts disponíveis

Comando Descrição
composer test Executa os testes (Pest) com cobertura de código e cobertura de tipos.
composer static Executa a análise estática com PHPStan.
composer code Corrige (phpcbf) e verifica (phpcs) o padrão de código PSR-1/PSR-2/PSR-12.

Suporte

Licença

Este projeto é licenciado sob a Licença MIT.

Autor

Documentação gerada com auxílio de ferramentas de I.A.