mapado/request-fields-parser

Convert string like `id,firstname,lastname,jobs{startDate,position,company{id,recordNumber}}` to the array

v3.1.0 2023-12-08 13:56 UTC

This package is auto-updated.

Last update: 2024-11-08 16:01:05 UTC


README

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.

Installation

composer require mapado/request-fields-parser

Usage

use Mapado\RequestFieldsParser\Parser;

$parser = new Parser();

$outArray = $parser->parse($string);

$outString = $parser->reverseParse($array);

Extensibility

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
    }
}

Contribute

Just run make test to launch the test suite