Secciones

Factorías HTTP (PSR-17)


Resumen

Phalcon\Http\Message\RequestFactory, Phalcon\Http\Message\ResponseFactory, Phalcon\Http\Message\ServerRequestFactory, Phalcon\Http\Message\StreamFactory, Phalcon\Http\Message\UploadedFileFactory, Phalcon\Http\Message\UriFactory son las factorías implementadas por las factorías de la interfaz de mensajería HTTP PSR-17 definido por PHP-FIG.

Estos componentes ayudan a crear objetos HTTP según la definición del estándar PSR-7.

RequestFactory

Phalcon\Http\Message\RequestFactory se puede usar para crear objetos Phalcon\Http\Message\Request.

<?php

use Phalcon\Http\Message\RequestFactory;

$factory = new RequestFactory();

$stream = $factory->createRequest(
    'GET', 
    'https://api.phalcon.io/companies/1'
);

El método createRequest() acepta una cadena como método (GET, POST etc.) y la URI y devuelve el objeto de la petición.

ResponseFactory

Phalcon\Http\Message\ResponseFactory se puede usar para crear objetos Phalcon\Http\Message\Response.

<?php

use Phalcon\Http\Message\ResponseFactory;

$factory = new ResponseFactory();

$stream = $factory->createResponse(200, 'OK');

El método createResponse() acepta un entero con el estado de la respuesta así como una cadena, que representa la frase de razón. Si no se específica la razón, el componente usará el valor por defecto sugerido por el RFC de HTTP.

ServerRequestFactory

Phalcon\Http\Message\ServerRequestFactory se usará para crear objetos Phalcon\Http\Message\ServerRequest.

<?php

use Phalcon\Http\Message\ServerRequestFactory;

$factory = new ServerRequestFactory();

$request = $factory->createServerRequest(
    'GET', 
    'https://api.phalcon.io/companies/1',
    [
        'param' => 'value'
    ]
);

createServerRequest() crea el nuevo objeto usando un método (GET, POST etc.), una URI y opcionalmente un vector de parámetros SAPI con los que configurar la instancia de la petición generada.

Además de createServerRequest(), la factoría ofrece el método load() como ayuda para crear una petición rellenándola desde las variables superglobales.

<?php

use Phalcon\Http\Message\ServerRequestFactory;

$factory = new ServerRequestFactory();

$request = $factory->load(
    $_SERVER,
    $_GET,
    $_POST,
    $_COOKIE,
    $_FILES
);

Si no se suministra algún argumento, se usará la variable superglobal correspondiente.

StreamFactory

Phalcon\Http\Message\StreamFactory se usará para crear objetos Phalcon\Http\Message\Stream.

<?php

use Phalcon\Http\Message\StreamFactory;

$factory = new StreamFactory();

$stream = $factory->createStream('stream contents');

UploadedFileFactory

Phalcon\Http\Message\UploadedFileFactory se puede usar para crear objetos Phalcon\Http\Message\UploadedFile.

<?php

use Phalcon\Http\Message\StreamFactory;
use Phalcon\Http\Message\UploadedFileFactory;

$factory = new UploadedFileFactory();
$streamFactory = new StreamFactory();

$stream = $streamFactory->createStream('stream contents');

$size            = 12345;
$error           = 0;
$clientFilename  = null;
$clientMediaType = null;

$file = $factory->createUploadedFile(
    $stream,
    $size,
    $error,
    $clientFilename,
    $clientMediaType
);

Si no se especifica tamaño se obtendrá comprobando el tamaño del flujo. $error es el error de subida de fichero PHP, por defecto 0. Si se indica por el cliente, puede usar clientFilename y clientMediaType. De lo contrario valdrán null.

UriFactory

Phalcon\Http\Message\UriFactory se puede usar para crear objetos Phalcon\Http\Message\Uri.

<?php

use Phalcon\Http\Message\UriFactory;

$factory = new UriFactory();

$uri = $factory->createUri('https://api.phalcon.io/companies/1');