Skip to content
On this page

Generator

Generators are used to generate files from tokens which were created by tokenizers. For example, the JobGenerator can be used to generate a job file from a Job object. This file can then be written to disk and used by the application.

Interface

php
<?php

declare(strict_types=1);

namespace BaseCodeOy\Arch\Contract;

use BaseCodeOy\Arch\Model\GeneratorResult;

interface GeneratorInterface
{
    public function generate(): void;

    public function result(): GeneratorResult;
}

Example

php
<?php

declare(strict_types=1);

namespace BaseCodeOy\Arch\Generator\Laravel;

use BaseCodeOy\Arch\Facade\Tree;
use BaseCodeOy\Arch\Generator\AbstractGenerator;

final class JobGenerator extends AbstractGenerator
{
    public function generate(): void
    {
        /**
         * @var \BaseCodeOy\Arch\Model\Job
         */
        foreach (Tree::get('jobs') as $job) {
            $this->createFile(
                $job->name(),
                $this->renderClass($job, $job->shouldQueue() ? 'laravel/job/queued' : 'laravel/job/job', [
                    'class' => $job->name(),
                ]),
            );
        }

        $this->persist();
    }
}

References