final class Serializer in Zircon Profile 8
Same name in this branch
- 8 vendor/symfony/serializer/Serializer.php \Symfony\Component\Serializer\Serializer
- 8 vendor/zendframework/zend-diactoros/src/Request/Serializer.php \Zend\Diactoros\Request\Serializer
- 8 vendor/zendframework/zend-diactoros/src/Response/Serializer.php \Zend\Diactoros\Response\Serializer
- 8 vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Serializer.php \phpDocumentor\Reflection\DocBlock\Serializer
- 8 core/modules/rest/src/Plugin/views/style/Serializer.php \Drupal\rest\Plugin\views\style\Serializer
Same name and namespace in other branches
- 8.0 vendor/zendframework/zend-diactoros/src/Request/Serializer.php \Zend\Diactoros\Request\Serializer
Serialize (cast to string) or deserialize (cast string to Request) messages.
This class provides functionality for serializing a RequestInterface instance to a string, as well as the reverse operation of creating a Request instance from a string/stream representing a message.
Hierarchy
- class \Zend\Diactoros\AbstractSerializer
- class \Zend\Diactoros\Request\Serializer
Expanded class hierarchy of Serializer
File
- vendor/
zendframework/ zend-diactoros/ src/ Request/ Serializer.php, line 28
Namespace
Zend\Diactoros\RequestView source
final class Serializer extends AbstractSerializer {
/**
* Deserialize a request string to a request instance.
*
* Internally, casts the message to a stream and invokes fromStream().
*
* @param string $message
* @return Request
* @throws UnexpectedValueException when errors occur parsing the message.
*/
public static function fromString($message) {
$stream = new Stream('php://temp', 'wb+');
$stream
->write($message);
return self::fromStream($stream);
}
/**
* Deserialize a request stream to a request instance.
*
* @param StreamInterface $stream
* @return Request
* @throws UnexpectedValueException when errors occur parsing the message.
*/
public static function fromStream(StreamInterface $stream) {
if (!$stream
->isReadable() || !$stream
->isSeekable()) {
throw new InvalidArgumentException('Message stream must be both readable and seekable');
}
$stream
->rewind();
list($method, $requestTarget, $version) = self::getRequestLine($stream);
$uri = self::createUriFromRequestTarget($requestTarget);
list($headers, $body) = self::splitStream($stream);
return (new Request($uri, $method, $body, $headers))
->withProtocolVersion($version)
->withRequestTarget($requestTarget);
}
/**
* Serialize a request message to a string.
*
* @param RequestInterface $request
* @return string
*/
public static function toString(RequestInterface $request) {
$headers = self::serializeHeaders($request
->getHeaders());
$body = (string) $request
->getBody();
$format = '%s %s HTTP/%s%s%s';
if (!empty($headers)) {
$headers = "\r\n" . $headers;
}
if (!empty($body)) {
$headers .= "\r\n\r\n";
}
return sprintf($format, $request
->getMethod(), $request
->getRequestTarget(), $request
->getProtocolVersion(), $headers, $body);
}
/**
* Retrieve the components of the request line.
*
* Retrieves the first line of the stream and parses it, raising an
* exception if it does not follow specifications; if valid, returns a list
* with the method, target, and version, in that order.
*
* @param StreamInterface $stream
* @return array
*/
private static function getRequestLine(StreamInterface $stream) {
$requestLine = self::getLine($stream);
if (!preg_match('#^(?P<method>[!\\#$%&\'*+.^_`|~a-zA-Z0-9-]+) (?P<target>[^\\s]+) HTTP/(?P<version>[1-9]\\d*\\.\\d+)$#', $requestLine, $matches)) {
throw new UnexpectedValueException('Invalid request line detected');
}
return [
$matches['method'],
$matches['target'],
$matches['version'],
];
}
/**
* Create and return a Uri instance based on the provided request target.
*
* If the request target is of authority or asterisk form, an empty Uri
* instance is returned; otherwise, the value is used to create and return
* a new Uri instance.
*
* @param string $requestTarget
* @return Uri
*/
private static function createUriFromRequestTarget($requestTarget) {
if (preg_match('#^https?://#', $requestTarget)) {
return new Uri($requestTarget);
}
if (preg_match('#^(\\*|[^/])#', $requestTarget)) {
return new Uri();
}
return new Uri($requestTarget);
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
AbstractSerializer:: |
constant | |||
AbstractSerializer:: |
constant | |||
AbstractSerializer:: |
protected static | function | Filter a header name to wordcase | |
AbstractSerializer:: |
protected static | function | Retrieve a single line from the stream. | |
AbstractSerializer:: |
constant | |||
AbstractSerializer:: |
protected static | function | Serialize headers to string values. | |
AbstractSerializer:: |
protected static | function | Split the stream into headers and body content. | |
Serializer:: |
private static | function | Create and return a Uri instance based on the provided request target. | |
Serializer:: |
public static | function | Deserialize a request stream to a request instance. | |
Serializer:: |
public static | function | Deserialize a request string to a request instance. | |
Serializer:: |
private static | function | Retrieve the components of the request line. | |
Serializer:: |
public static | function | Serialize a request message to a string. |