NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
Lifecycle for Laravel

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 subjects

Vý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 · quota

Z príkazového riadku

php artisan lifecycle:graph "App\Lifecycles\ListingLifecycle"
php artisan lifecycle:graph listing:status --format=dot --output=storage/listing.dot

definition 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 kryptomien

Odoslaní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.