for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace BenTools\QueryString\Renderer;
use BenTools\QueryString\QueryString;
final class NativeRenderer implements QueryStringRendererInterface
{
/**
* @var int
*/
private $encoding;
* @var string|null
private $separator;
* NativeRenderer constructor.
* @param int $encoding
protected function __construct(int $encoding)
$this->encoding = $encoding;
}
* @return NativeRenderer
public static function rfc1738(): self
return new self(PHP_QUERY_RFC1738);
public static function rfc3986(): self
return new self(PHP_QUERY_RFC3986);
* @return int
public function getEncoding(): int
return $this->encoding;
public function withEncoding(int $encoding): QueryStringRendererInterface
if (!in_array($encoding, [PHP_QUERY_RFC1738, PHP_QUERY_RFC3986])) {
throw new \InvalidArgumentException("Invalid encoding.");
return new self($encoding);
* @return null|string
public function getSeparator(): ?string
return $this->separator;
* @param null|string $separator
* @return QueryString
public function withSeparator(?string $separator): QueryStringRendererInterface
$clone = clone $this;
$clone->separator = $separator;
return $clone;
* @inheritDoc
public function render(QueryString $queryString): string
return http_build_query(
$queryString->getParams(),
null,
$this->separator ?? ini_get('arg_separator.output'),
$this->encoding
);