for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
declare(strict_types=1);
namespace Chubbyphp\Serialization\Encoder;
final class UrlEncodedTypeEncoder implements TypeEncoderInterface
{
/**
* @return string
*/
public function getContentType(): string
return 'application/x-www-form-urlencoded';
}
* @param array $data
*
public function encode(array $data): string
return $this->buildQuery($data);
* @param string $path
private function buildQuery(array $data, string $path = ''): string
$query = '';
foreach ($data as $key => $value) {
$subPath = '' !== $path ? $path.'['.$key.']' : $key;
if (is_array($value)) {
$query .= $this->buildQuery($value, $subPath);
} else {
$query .= $subPath.'='.urlencode($this->covertData($value));
$query .= '&';
$query = substr($query, 0, -strlen('&'));
return $query;
* @param null|bool|int|string $value
private function covertData($value): string
if (true === $value) {
return 'true';
if (false === $value) {
return 'false';
return (string) $value;