La clase Request: cómo recibir datos de formularios, url, cookies, etc ...

La clase Request se encarga de gestionar toda la información de las peticiones HTTP entrantes. Proporciona una interfaz orientada a objetos para acceder a los datos de $_GET, $_POST, $_COOKIE, $_FILES y $_SERVER.

Fichero: Core/Request.php

Este objeto está disponible en todos los controladores, ya sea como propiedad o como método.

// controladores actuales
$mi_campo = $this->request->input('mi_campo');

// para los nuevos controladores
$mi_campo = $this->request()->input('mi_campo');

🖱️ Obtener parámetros de la url (query)

En ocasiones queremos obtener un parámetro que nos llega en la url, por ejemplo esta:

  • http ... /MiControlador?id=1234

Para obtener el valor del parámetro id debemos usar el método query():

$id = $this->request()->query('id');

// método alternativo
$id = $this->request()->query->get('id');

// todos los parámetros de la url
$all = $this->request()->query->all();

⌨️ Obtener valores del formulario (input)

Para obtener el valor de un campo que nos llega por formulario debemos usar el método input(), que obtiene el parámetro de la entrada request (POST/PUT/PATCH).

$mi_campo = $this->request()->input('mi_campo');

// método alternativo
$mi_campo = $this->request()->request->get('mi_campo');

// todos los campos
$all = $this->request()->request->all();

🔍 Obtener valores de url y formularios

En ocasiones un parámetro podemos recibirlo por la url o bien por formulario. En estos casos tenemos dos métodos para establecer la prioridad:

  • inputOrQuery(): consulta primero el valor de input y si no existe entonces devuelve el de query (url).
  • queryOrInput(): consulta primero el valor de query (url) y si no existe entonces devuelve el de input.
  • get(): consulta primero el valor de query (url) y si no existe entonces devuelve el de query. Obsoleto.

Para este ejemplo recibiremos por la url el parámetro mi_campo=555 y por formulario nos llega mi_campo=777:

$mi_campo = $this->request()->inputOrQuery('mi_campo'); // 777

$mi_campo = $this->request()->queryOrInput('mi_campo'); // 555

$mi_campo = $this->request()->get('mi_campo'); // 555

🍪 Cookies

Obtiene el valor de una cookie específica.

$mi_cookie = $this->request()->cookie('mi_cookie');

// método alternativo
$mi_cookie = $this->request()->cookies->get('mi_cookie');

// todas las cookies
$cookies = $this->request()->cookies->all();

✉️ Cabeceras (header)

Para obtener el valor de una cabecera de la petición HTTP debemos usar el método header():

$mi_header = $this->request()->header('mi_header');

// método alternativo
$mi_header = $this->request()->headers->get('mi_header');

// todas las cabeceras
$all = $this->request()->headers->all();

📦 json

Para obtener un json recibido debemos usar el método json(), que nos devuelve el json ya convertido en array asocuativo:

$json = $this->request()->json();

Si se especifica $key, devuelve solo ese campo del JSON o el valor por defecto:

$name = $this->request()->json('name'); // devuelve solo el campo 'name'
$age = $this->request()->json('age', 0);    // devuelve 'age' o 0 si no existe

🧾 getContent

Devuelve el cuerpo crudo de la petición HTTP. Es útil para peticiones XML o cualquier contenido que no sea form-data:

$raw = $this->request()->getContent();

Otros métodos Públicos

static createFromGlobals(): self

Método factoría que crea una instancia de Request a partir de las variables globales de PHP ($_COOKIE, $_FILES, $_SERVER, $_GET, $_POST).

$request = Request::createFromGlobals();

all(string ...$key): array

Devuelve un array con todos los parámetros de la petición (query y request). Si se especifican claves, devuelve un array asociativo con los valores de esas claves.

$all = $this->request()->all();

// solamente algunos campos
$some = $this->request()->all('campo1', 'campo2', 'campo3');

browser(): string

Detecta y devuelve el navegador del cliente a partir del User-Agent. Puede devolver: chrome, edge, firefox, safari, opera, ie o unknown.

$browser = $this->request()->browser(); // firefox

// si prefieres el user-agent completo
$some = $this->request()->userAgent();

📄 file(string $key): ?UploadedFile

Obtiene un fichero subido por su clave. Devuelve un objeto UploadedFile.

$upload_file = $this->request()->file('mi_archivo');

// método alternativo
$upload_file = $this->request()->files->get('mi_archivo');

// para varios archivos
$upload_files = $this->request()->files->getArray('mi_archivo');

has(): bool

Si necesitas consultar si un parámetro existe, ya llegue por url o por formulario, puedes usar el método has():

if ($this->request()->has('mi_campo') {
    // existe ese campo
}

// comprobamos solamente en la url
if ($this->request()->query->has('mi_campo') {
    // existe ese campo
}

// comprobamos solamente por input
if ($this->request()->request->has('mi_campo') {
    // existe ese campo
}

// comprobamos en las cookies
if ($this->request()->cookies->has('mi_campo') {
    // existe ese campo
}

// comprobamos en las cabeceras
if ($this->request()->headers->has('mi_campo') {
    // existe ese campo
}

host(): string

Devuelve el host de la petición.

$host = $this->request()->host();

ip(): string

Devuelve la dirección IP del cliente. Tiene en cuenta cabeceras de proxy como HTTP_CF_CONNECTING_IP y HTTP_X_FORWARDED_FOR.

$ip = $this->request()->ip();

isMethod(string $method): bool

Comprueba si el método de la petición es el especificado.

if ($this->request()->isMethod(Request::METHOD_POST)) {
    // es una petición POST
}

method(): string

Devuelve el método HTTP de la petición (GET, POST, PUT, etc.).

$method = $this->request()->method();

os(): string

Detecta y devuelve el sistema operativo del cliente a partir del User-Agent. Puede devolver: windows, mac, linux, unix, sun, bsd o unknown.

$os = $this->request()->os(); // linux

protocol(): string

Devuelve el protocolo de la petición (ej: HTTP/1.1).

$protocol = $this->request()->protocol();

🔒 isSecure(): bool

Devuelve true si la petición se ha realizado a través de HTTPS.

if ($this->request()->isSecure()) {
    // es una petición HTTPS
}

url(?int $position = null): string

Devuelve la URL de la petición sin la query string. Si se proporciona una posición, devuelve la parte de la URL correspondiente a esa posición (separada por /).

// http://localhost/MiControlador/1234/?param1=555
$url = $this->request()->url(); // http://localhost/MiControlador
$id = $this->request()->url(1); // 1234

urlWithQuery(): string

Devuelve la URL con la query string.

$url = $this->request()->urlWithQuery();

userAgent(): string

Devuelve el User-Agent de la petición.

$user_agent = $this->request()->userAgent();
Cookies
Usamos cookies en nuestro sitio web para brindarte la experiencia más relevante recordando tus preferencias y visitas repetidas. Al hacer clic en "Aceptar", aceptas el uso de TODAS las cookies necesarias.
Copyright (c) 2013-2025 FacturaScripts
0.31936s

Soporte