Definície a grafy
Pomocníci na úrovni modelu a prístup k definíciám vystavujú skompilovanú definíciu, validáciu aj diagramy:
$model = Lifecycles::model(Listing::class); // or (Listing::class, 'status')
$model->states(); // every state
$model->initial(); // ListingStatus::Draft
$model->terminal(); // [ListingStatus::Archived]
$model->transitions(); // list<TransitionDefinition>
$model->graph(); // Mermaid (or ->graph(GraphFormat::Dot))
Lifecycles::definitions()->get(ListingLifecycle::class); // CompiledDefinition
Lifecycles::definitions()->of($listing); // the definition of a model's lifecycle
Lifecycles::definitions()->validate(ListingLifecycle::class); // ValidationReport: isValid(), errors(), warnings()
Lifecycles::definitions()->graph(ListingLifecycle::class, GraphFormat::Dot);
Lifecycles::definitions()->subjects(); // config('lifecycle.subjects')
Lifecycles::definitions()->registered(); // the definitions of those subjectsVýstup grafu je deterministický, v poradí deklarácie a s rozvinutými zástupnými znakmi. Mermaid používa stateDiagram-v2, systémové hrany označí ⚙ a ku každému stavu pridá poznámku s TTL, ochrannou lehotou, kvótou, časom v stave a zapečatením; DOT kreslí zaoblené boxy, prerušované systémové hrany a dvojité okraje koncových stavov. Cyklus inzerátu vyzerá takto:
stateDiagram-v2
state "Draft" as s0
state "Active" as s1
state "Closed" as s2
state "Expired" as s3
state "Archived" as s4
[*] --> s0
s0 --> s1: publish
s1 --> s2: close
s2 --> s1: reopen
s1 --> s3: expire ⚙
s3 --> s1: reactivate
s0 --> s4: archive
s1 --> s4: archive
s2 --> s4: archive
s3 --> s4: archive
s4 --> [*]
note right of s1: ttl 30 days · grace 3 days · quotaZ príkazového riadku
php artisan lifecycle:graph "App\Lifecycles\ListingLifecycle"
php artisan lifecycle:graph listing:status --format=dot --output=storage/listing.dotdefinition je trieda definície alebo Model:atribút (názov triedy alebo morph alias); bez --format sa použije graph.default_format a --output graf zapíše do súboru.
Lifecycles::definitions()->flush() zahodí skompilované definície — pre testy, ktoré cyklus za behu predefinujú.
Prejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.