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
- Laravel/CastGenerator
- Laravel/CommandGenerator
- Laravel/ControllerGenerator
- Laravel/ControllerTestGenerator
- Laravel/EventGenerator
- Laravel/FactoryGenerator
- Laravel/FormRequestGenerator
- Laravel/GlobalScopeGenerator
- Laravel/JobGenerator
- Laravel/MailGenerator
- Laravel/MiddlewareGenerator
- Laravel/MigrationGenerator
- Laravel/ModelGenerator
- Laravel/ModelTestGenerator
- Laravel/NotificationGenerator
- Laravel/Nova/ActionGenerator
- Laravel/Nova/DashboardGenerator
- Laravel/Nova/FilterGenerator
- Laravel/Nova/LensGenerator
- Laravel/Nova/MetricGenerator
- Laravel/Nova/ResourceGenerator
- Laravel/ObserverGenerator
- Laravel/PivotGenerator
- Laravel/PolicyGenerator
- Laravel/ResourceCollectionGenerator
- Laravel/ResourceGenerator
- Laravel/RouteGenerator
- Laravel/RuleGenerator
- Laravel/SeederGenerator
- Laravel/ServiceProviderGenerator
- Laravel/ViewComponentGenerator
- Laravel/ViewComposerGenerator
- Laravel/ViewGenerator
- Livewire/ComponentGenerator
- Livewire/TestGenerator
- Livewire/ViewGenerator