Skip to content

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

License

Notifications You must be signed in to change notification settings

mapado/request-fields-parser

Repository files navigation

request-fields-parser

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

About

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

Resources

License

Stars

Watchers

Forks

Packages

No packages published