src/Http/Response.php
public function withStatus($code, $reason_phrase = '')
    {
        if (!in_array($code, array_keys($this->status_codes))) {
            throw new InvalidArgumentException(
                'HTTP Status Code is invalid'
            );
        }

        $response = clone $this;
        $response->status_code = (int)$code;
        $response->reason_phrase = (string)$reason_phrase ?? $this->status_code[$code];

        return $response;
    }
public function withStatus($code, $reason_phrase = '')
    {
        if (!in_array($code, array_keys($this->status_codes))) {
            throw new InvalidArgumentException(
                'HTTP Status Code is invalid'
            );
        }

        $response = clone $this;
        $response->status_code = (int)$code;
        $response->reason_phrase = (string)$reason_phrase ?? $this->status_code[$code];

        return $response;
    }
Return an instance with the specified status code and, optionally, reason phrase.
If no reason phrase is specified, implementations MAY choose to default
to the RFC 7231 or IANA recommended reason phrase for the response's
status code.
This method MUST be implemented in such a way as to retain the
immutability of the message, and MUST return an instance that has the
updated status and reason phrase.

@link http://tools.ietf.org/html/rfc7231#section-6
@link http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml
@param int $code The 3-digit integer result code to set.
@param string $reason_phrase The reason phrase to use with the
provided status code; if none is provided, implementations MAY
use the defaults as suggested in the HTTP specification.
@return ResponseInterface
@throws \InvalidArgumentException For invalid status code arguments.