HTTP Factories (PSR-17)¶
Overview¶
Phalcon\Http\Message\RequestFactory, Phalcon\Http\Message\ResponseFactory, Phalcon\Http\Message\ServerRequestFactory, Phalcon\Http\Message\StreamFactory, Phalcon\Http\Message\UploadedFileFactory, Phalcon\Http\Message\UriFactory are the factories implemented of the PSR-17 HTTP messaging interface factories as defined by PHP-FIG.
These components aid in creating HTTP objects as defined by the PSR-7 standard.
RequestFactory¶
The Phalcon\Http\Message\RequestFactory can be used to create Phalcon\Http\Message\Request objects.
<?php
use Phalcon\Http\Message\RequestFactory;
$factory = new RequestFactory();
$stream = $factory->createRequest(
'GET',
'https://api.phalcon.io/companies/1'
);
createRequest()
method accepts a string as the method (GET
, POST
etc.) and the URI and returns back the request object. ResponseFactory¶
The Phalcon\Http\Message\ResponseFactory can be used to create Phalcon\Http\Message\Response objects.
<?php
use Phalcon\Http\Message\ResponseFactory;
$factory = new ResponseFactory();
$stream = $factory->createResponse(200, 'OK');
createResponse()
method accepts an integer which is the response status as well as a string, representing the reason phrase. If no reason is specified, the component will use the default ones as suggested by the HTTP RFCs. ServerRequestFactory¶
The Phalcon\Http\Message\ServerRequestFactory can be used to create Phalcon\Http\Message\ServerRequest objects.
<?php
use Phalcon\Http\Message\ServerRequestFactory;
$factory = new ServerRequestFactory();
$request = $factory->createServerRequest(
'GET',
'https://api.phalcon.io/companies/1',
[
'param' => 'value'
]
);
The createServerRequest()
creates the new object using a method (GET
, POST
etc.), a URI and optionally an array of SAPI parameters with which to seed the generated request instance.
In addition to the createServerRequest()
the factory offers the load()
method as a helper to create a request by populating it from the superglobals.
<?php
use Phalcon\Http\Message\ServerRequestFactory;
$factory = new ServerRequestFactory();
$request = $factory->load(
$_SERVER,
$_GET,
$_POST,
$_COOKIE,
$_FILES
);
If If any argument is not supplied, the corresponding superglobal will be used.
StreamFactory¶
The Phalcon\Http\Message\StreamFactory can be used to create Phalcon\Http\Message\Stream objects.
<?php
use Phalcon\Http\Message\StreamFactory;
$factory = new StreamFactory();
$stream = $factory->createStream('stream contents');
UploadedFileFactory¶
The Phalcon\Http\Message\UploadedFileFactory can be used to create Phalcon\Http\Message\UploadedFile objects.
<?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
);
If a size is not provided it will be determined by checking the size of the stream. The $error
is the PHP file upload error, It defaults to 0
. If provided by the client, you can use the clientFilename
and clientMediaType
. Otherwise they can be set to null
.
UriFactory¶
The Phalcon\Http\Message\UriFactory can be used to create Phalcon\Http\Message\Uri objects.