Slim-Http
Slim PSR-7 Object Decorators, (*1)
, (*2)
Installation
It's recommended that you use Composer to install
this library., (*3)
$ composer require slim/http
This will install the slim/http
component and all required dependencies.
PHP 7.4, or newer, is required., (*4)
Tests
To execute the test suite, you'll need to install all development dependencies., (*5)
$ git clone https://github.com/slimphp/Slim-Http
$ composer install
$ composer test
Usage
The Decoration Repo Provides 3 Factories which instantiate the Decorators. They respectively return PSR-7 Compatible Interfaces.
- DecoratedResponseFactory
- DecoratedServerRequestFactory
- DecoratedUriFactory
, (*6)
Example for Instantiating a Decorated Nyholm/Psr7 Response
<?php
use Nyholm\Psr7\Factory\Psr17Factory;
use Slim\Http\Factory\DecoratedResponseFactory;
$nyholmFactory = new Psr17Factory();
/**
* DecoratedResponseFactory takes 2 parameters
* @param \Psr\Http\Message\ResponseFactoryInterface which should be a ResponseFactory originating from the PSR-7 Implementation of your choice
* @param \Psr\Http\Message\StreamFactoryInterface which should be a StreamFactory originating from the PSR-7 Implementation of your choice
* Note: Nyholm/Psr17 has one factory which implements Both ResponseFactoryInterface and StreamFactoryInterface see https://github.com/Nyholm/psr7/blob/master/src/Factory/Psr17Factory.php
*/
$decoratedResponseFactory = new DecoratedResponseFactory($nyholmFactory, $nyholmFactory);
/**
* @var \Slim\Http\Response $response
* The returned variable is a Response which has methods like withJson()
*/
$response = $decoratedResponseFactory->createResponse(200, 'OK');
$response = $response->withJson(['data' => [1, 2, 3]]);
Example for Instantiating a Decorated Laminas Diactoros Response
<?php
use Laminas\Diactoros\ResponseFactory;
use Laminas\Diactoros\StreamFactory;
use Slim\Http\Factory\DecoratedResponseFactory;
$responseFactory = new ResponseFactory();
$streamFactory = new StreamFactory();
/**
* DecoratedResponseFactory takes 2 parameters
* @param \Psr\Http\Message\ResponseFactoryInterface which should be a ResponseFactory originating from the PSR-7 Implementation of your choice
* @param \Psr\Http\Message\StreamFactoryInterface which should be a StreamFactory originating from the PSR-7 Implementation of your choice
*/
$decoratedResponseFactory = new DecoratedResponseFactory($responseFactory, $streamFactory);
/**
* @var \Slim\Http\Response $response
* The returned variable is a Response which has methods like withJson()
*/
$response = $decoratedResponseFactory->createResponse(200, 'OK');
$response = $response->withJson(['data' => [1, 2, 3]]);
Decorated Response Object Methods
The decorated ResponseInterface
provides the following additional methods:, (*7)
Response::withJson($data, $status, $options, $depth)
Parameter |
Type |
Description |
$data |
mixed |
The data to encode |
$status |
int |
The HTTP Status Code |
$depth |
int |
JSON encoding max depth |
Response::withFileDownload($file, $name)
Triggers the client to download the specified file., (*8)
Parameter |
Type |
Description |
$file |
`string |
resource|StreamInterface` | The file to send to the client |
$name |
`string |
null| The filename for the Content-Dispositionheader. Defaults to attachment` |
$contentType |
`bool |
string| Set the Content-Type` header. Defaults to true, which attempts to detect mime type from file extension, set to false to disable. |
Response::withFile($file, $contentType)
Response with file to client, (*9)
Parameter |
Type |
Description |
$file |
`string |
resource|StreamInterface` | The file to send to the client |
$contentType |
`bool |
string| Set the Content-Type` header. Defaults to true, which attempts to detect mime type from file extension, set to false to disable. |
Response::withRedirect($url, $status)
Parameter |
Type |
Description |
$url |
string |
The redirect destination url |
$status |
int |
The HTTP Status Code |
Response::write($data)
Parameter |
Type |
Description |
$url |
string |
The data to write to the Response body |
Response::isClientError()
Assert the underlying response's status code is between 400 and 500., (*10)
Response::isEmpty()
Assert the underlying response's status code is 204, 205 or 304., (*11)
Response::isForbidden()
Assert the underlying response's status code is 403., (*12)
Assert the underlying response's status code is between 100 and 200., (*13)
Response::isOk()
Assert the underlying response's status code is 200., (*14)
Response::isNotFound()
Assert the underlying response's status code is 404., (*15)
Response::isRedirect()
Assert the underlying response's status code is 301, 302, 303, 307 or 308., (*16)
Response::isRedirection()
Assert the underlying response's status code is between 300 and 400., (*17)
Response::isServerError()
Assert the underlying response's status code is between 500 and 600., (*18)
Response::isSuccessful()
Assert the underlying response's status code is between 200 and 300., (*19)
Response::__toString()
Will return a string formatted representation of the underlying response object., (*20)
HTTP/1.1 200 OK
Content-Type: application/json;charset=utf-8
{"Hello": "World"}
Decorated ServerRequest Object Methods
The decorated ServerRequestInterface
provides the following additional methods:, (*21)
ServerRequest::withAttributes($attributes)
Parameter |
Type |
Description |
$attributes |
array |
Attributes to be appended to the request |
ServerRequest::getContentCharset()
Returns the detected charset from the Content-Type
header of the underlying server request object. Returns null
if no value is present., (*22)
ServerRequest::getContentType()
Returns the value from the Content-Type
header of the underlying server request object. Returns null
if no value is present., (*23)
ServerRequest::getContentLength()
Returns the value from the Content-Length
header of the underlying server request object. Returns null
if no value is present., (*24)
ServerRequest::getCookieParam($key, $default)
Parameter |
Type |
Description |
$key |
string |
The attribute name |
$default |
mixed |
Default value to return if the attribute does not exist |
Returns the first detected value from the Content-Type
header of the underlying server request object. Returns null
if no value is present., (*25)
Returns an array of detected values from the Content-Type
header of the underlying server request object. Returns an empty array if no values are present., (*26)
ServerRequest::getParam($key, $default)
Returns the value from key in $_POST
or $_GET
, (*27)
Parameter |
Type |
Description |
$key |
string |
The attribute name |
$default |
mixed |
Default value to return if the attribute does not exist |
ServerRequest::getParams()
Returns a merged associative array of the $_POST
and $_GET
parameters., (*28)
ServerRequest::getParsedBody()
Returns the parsed body from the underlying server request object if it already has been parsed by the underlying PSR-7 implementation. If the parsed body is empty, our decorator attempts to detect the content type and parse the body using one of the registered media type parsers., (*29)
The default media type parsers support:
- JSON
- XML, (*30)
You can register your own media type parser using the ServerRequest::registerMediaTypeParser()
method., (*31)
ServerRequest::getParsedBodyParam($key, $default)
Returns the value from key in the parsed body of the underlying server request object., (*32)
Parameter |
Type |
Description |
$key |
string |
The attribute name |
$default |
mixed |
Default value to return if the attribute does not exist |
ServerRequest::getQueryParam($key, $default)
Returns the value from key in the parsed ServerRequest
query string, (*33)
Parameter |
Type |
Description |
$key |
string |
The attribute name |
$default |
mixed |
Default value to return if the attribute does not exist |
ServerRequest::getServerParam($key, $default)
Returns the value from key in parsed server parameters from the underlying underlying server request object., (*34)
Parameter |
Type |
Description |
$key |
string |
The attribute name |
$default |
mixed |
Default value to return if the attribute does not exist |
Returns the value from key in parsed server parameters from the underlying server request object., (*35)
Parameter |
Type |
Description |
$mediaType |
string |
A HTTP media type (excluding content-type params) |
$callable |
callable |
A callable that returns parsed contents for media type |
ServerRequest::isMethod($method)
Parameter |
Type |
Description |
$method |
string |
The method name |
ServerRequest::isDelete()
Asserts that the underlying server request's method is DELETE
, (*36)
ServerRequest::isGet()
Asserts that the underlying server request's method is GET
, (*37)
ServerRequest::isHead()
Asserts that the underlying server request's method is HEAD
, (*38)
ServerRequest::isOptions()
Asserts that the underlying server request's method is OPTIONS
, (*39)
ServerRequest::isPatch()
Asserts that the underlying server request's method is PATCH
, (*40)
ServerRequest::isPost()
Asserts that the underlying server request's method is POST
, (*41)
ServerRequest::isPut()
Asserts that the underlying server request's method is PUT
, (*42)
ServerRequest::isXhr()
Asserts that the header X-Requested-With
from the underlying server request is XMLHttpRequest
, (*43)
Decorated Uri Object Methods
The decorated UriInterface
provides the following additional methods:, (*44)
Uri::getBaseUrl()
Returns the fully qualified base URL of the underlying uri object., (*45)
Contributing
Please see CONTRIBUTING for details., (*46)
Security
If you discover security related issues, please email security@slimframework.com
instead of using the issue tracker., (*47)
Credits
License
This component is licensed under the MIT license. See License File
for more information., (*48)