Convert string like id,firstname,lastname,jobs{startDate,position,company{id,recordNumber}}
to the following array:
[
'id' => true,
'firstname' => true,
'lastname' => true,
'jobs' => [
'startDate' => true,
'position' => true,
'company' => [
'id' => true,
'recordNumber' => true,
],
]
]
You can think of it like an explode on steroids.
Also implement a reverseParse
function for the opposite transformation.
composer require mapado/request-fields-parser
use Mapado\RequestFieldsParser\Parser;
$parser = new Parser();
$outArray = $parser->parse($string);
$outString = $parser->reverseParse($array);
You can decorate the Parser like this:
use Mapado\RequestFieldsParser\ParserInterface;
class ExtendedParser implements ParserInterface
{
/**
* @var ParserInterface
*/
private $decoratedParser;
public function __construct(ParserInterface $decoratedParser)
{
$this->decoratedParser = $decoratedParser;
}
public function parse(string $string): array
{
// do stuff and return an array
}
}
Just run make test
to launch the test suite