2017 © Pedro PelĂĄez
 

library http

Slim's PSR-7 implementation

image

slim/http

Slim's PSR-7 implementation

  • Thursday, May 17, 2018
  • by codeguy
  • Repository
  • 17 Watchers
  • 60 Stars
  • 9,488 Installations
  • PHP
  • 10 Dependents
  • 1 Suggesters
  • 30 Forks
  • 12 Open issues
  • 6 Versions
  • 29 % Grown

The README.md

Slim-Http

Slim PSR-7 Object Decorators, (*1)

Build Status Coverage Status Total Downloads License, (*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 theContent-Dispositionheader. Defaults toattachment`
$contentType `bool string| Set theContent-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 theContent-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)

Response::isInformational()

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

ServerRequest::getMediaType()

Returns the first detected value from the Content-Type header of the underlying server request object. Returns null if no value is present., (*25)

ServerRequest::getMediaTypeParams()

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

ServerRequest::registerMediaTypeParser($key, $default)

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)

The Versions

17/05 2018
29/06 2017

0.3

0.3.0.0 http://slimframework.com

Slim's PSR-7 implementation

  Sources   Download

MIT

The Requires

 

The Development Requires

psr-7 http psr7

14/05 2017

0.2

0.2.0.0 http://slimframework.com

Slim's PSR-7 implementation

  Sources   Download

MIT

The Requires

 

The Development Requires

psr-7 http psr7

07/05 2017

0.1.2

0.1.2.0 http://slimframework.com

Strict PSR-7 implementation

  Sources   Download

MIT

The Requires

 

The Development Requires

psr-7 http psr7

11/12 2016

0.1.1

0.1.1.0 http://slimframework.com

Strict PSR-7 implementation

  Sources   Download

MIT

The Requires

 

The Development Requires

psr-7 http psr7

24/12 2015

0.1.0

0.1.0.0 http://slimframework.com

Strict PSR-7 implementation

  Sources   Download

MIT

The Requires

 

The Development Requires

psr-7 http psr7