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
- Laravel/CastTokenizer
- Laravel/CommandTokenizer
- Laravel/ConfigurationTokenizer
- Laravel/ControllerTokenizer
- Laravel/EventTokenizer
- Laravel/FactoryTokenizer
- Laravel/FormRequestTokenizer
- Laravel/GlobalScopeTokenizer
- Laravel/JobTokenizer
- Laravel/MailTokenizer
- Laravel/MiddlewareTokenizer
- Laravel/MigrationTokenizer
- Laravel/ModelTokenizer
- Laravel/NotificationTokenizer
- Laravel/Nova/ActionTokenizer
- Laravel/Nova/DashboardTokenizer
- Laravel/Nova/FilterTokenizer
- Laravel/Nova/LensTokenizer
- Laravel/Nova/MetricTokenizer
- Laravel/Nova/ResourceTokenizer
- Laravel/ObserverTokenizer
- Laravel/PivotTokenizer
- Laravel/PolicyTokenizer
- Laravel/ResourceCollectionTokenizer
- Laravel/ResourceTokenizer
- Laravel/RouteTokenizer
- Laravel/RuleTokenizer
- Laravel/SeederTokenizer
- Laravel/ServiceProviderTokenizer
- Laravel/StatementTokenizer
- Laravel/ViewComponentTokenizer
- Laravel/ViewComposerTokenizer
- Laravel/ViewTokenizer
- Livewire/ComponentTokenizer