You are here

class JsonResponse in Zircon Profile 8.0

Same name in this branch
  1. 8.0 vendor/symfony/http-foundation/JsonResponse.php \Symfony\Component\HttpFoundation\JsonResponse
  2. 8.0 vendor/zendframework/zend-diactoros/src/Response/JsonResponse.php \Zend\Diactoros\Response\JsonResponse
Same name and namespace in other branches
  1. 8 vendor/zendframework/zend-diactoros/src/Response/JsonResponse.php \Zend\Diactoros\Response\JsonResponse

JSON response.

Allows creating a response by passing data to the constructor; by default, serializes the data to JSON, sets a status code of 200 and sets the Content-Type header to application/json.

Hierarchy

Expanded class hierarchy of JsonResponse

File

vendor/zendframework/zend-diactoros/src/Response/JsonResponse.php, line 23

Namespace

Zend\Diactoros\Response
View source
class JsonResponse extends Response {
  use InjectContentTypeTrait;

  /**
   * Create a JSON response with the given data.
   *
   * Default JSON encoding is performed with the following options, which
   * produces RFC4627-compliant JSON, capable of embedding into HTML.
   *
   * - JSON_HEX_TAG
   * - JSON_HEX_APOS
   * - JSON_HEX_AMP
   * - JSON_HEX_QUOT
   *
   * @param mixed $data Data to convert to JSON.
   * @param int $status Integer status code for the response; 200 by default.
   * @param array $headers Array of headers to use at initialization.
   * @param int $encodingOptions JSON encoding options to use.
   * @throws InvalidArgumentException if unable to encode the $data to JSON.
   */
  public function __construct($data, $status = 200, array $headers = [], $encodingOptions = 15) {
    $body = new Stream('php://temp', 'wb+');
    $body
      ->write($this
      ->jsonEncode($data, $encodingOptions));
    $headers = $this
      ->injectContentType('application/json', $headers);
    parent::__construct($body, $status, $headers);
  }

  /**
   * Encode the provided data to JSON.
   *
   * @param mixed $data
   * @param int $encodingOptions
   * @return string
   * @throws InvalidArgumentException if unable to encode the $data to JSON.
   */
  private function jsonEncode($data, $encodingOptions) {
    if (is_resource($data)) {
      throw new InvalidArgumentException('Cannot JSON encode resources');
    }

    // Clear json_last_error()
    json_encode(null);
    $json = json_encode($data, $encodingOptions);
    if (JSON_ERROR_NONE !== json_last_error()) {
      throw new InvalidArgumentException(sprintf('Unable to encode data to JSON in %s: %s', __CLASS__, json_last_error_msg()));
    }
    return $json;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
InjectContentTypeTrait::injectContentType private function Inject the provided Content-Type, if none is already present.
JsonResponse::jsonEncode private function Encode the provided data to JSON.
JsonResponse::__construct public function Create a JSON response with the given data. Overrides Response::__construct
MessageTrait::$headerNames protected property Map of normalized header name to original name used to register header.
MessageTrait::$headers protected property List of all registered headers, as key => array of values.
MessageTrait::$protocol private property
MessageTrait::$stream private property
MessageTrait::arrayContainsOnlyStrings private function Test that an array contains only strings
MessageTrait::assertValidHeaderValue private static function Assert that the provided header values are valid.
MessageTrait::filterHeaders private function Filter a set of headers to ensure they are in the correct internal format.
MessageTrait::filterStringValue private static function Test if a value is a string
MessageTrait::getBody public function Gets the body of the message.
MessageTrait::getHeader public function Retrieves a message header value by the given case-insensitive name. 1
MessageTrait::getHeaderLine public function Retrieves a comma-separated string of the values for a single header.
MessageTrait::getHeaders public function Retrieves all message headers. 1
MessageTrait::getProtocolVersion public function Retrieves the HTTP protocol version as a string.
MessageTrait::hasHeader public function Checks if a header exists by the given case-insensitive name.
MessageTrait::withAddedHeader public function Return an instance with the specified header appended with the given value.
MessageTrait::withBody public function Return an instance with the specified message body.
MessageTrait::withHeader public function Return an instance with the provided header, replacing any existing values of any headers with the same case-insensitive name.
MessageTrait::withoutHeader public function Return an instance without the specified header.
MessageTrait::withProtocolVersion public function Return an instance with the specified HTTP protocol version.
Response::$phrases private property Map of standard HTTP status code/reason phrases
Response::$reasonPhrase private property
Response::$statusCode private property
Response::assertHeaders private function Ensure header names and values are valid.
Response::getReasonPhrase public function Gets the response reason phrase associated with the status code. Overrides ResponseInterface::getReasonPhrase
Response::getStatusCode public function Gets the response status code. Overrides ResponseInterface::getStatusCode
Response::validateStatus private function Validate a status code.
Response::withStatus public function Return an instance with the specified status code and, optionally, reason phrase. Overrides ResponseInterface::withStatus