Skip to content
On this page

Tokenizer

Tokenizers are used to transform tokens into normalized objects. For example, the ControllerTokenizer would transform a controller declaration into a Controller object, which would then be passed on to the ControllerGenerator class for further processing.

Interface

php
<?php

declare(strict_types=1);

namespace BaseCodeOy\Arch\Contract;

interface TokenizerInterface
{
    public function tokenize(array $tokens): array;
}

Example

php
<?php

declare(strict_types=1);

namespace BaseCodeOy\Arch\Tokenizer;

use BaseCodeOy\Arch\Model\Job;

final readonly class JobTokenizer extends AbstractTokenizer
{
    public function tokenize(array $tokens): array
    {
        if (empty($tokens['jobs'])) {
            return [];
        }

        $jobs = [];

        foreach ($tokens['jobs'] as $key => $value) {
            $jobs[] = $this->populateMetadata(
                new Job(
                    name: \is_numeric($key) ? $value : $key,
                    shouldQueue: $value['shouldQueue'] ?? false,
                    shouldBeUnique: $value['shouldBeUnique'] ?? false,
                ),
                $value,
            );
        }

        return [
            'jobs' => $jobs,
        ];
    }
}

References