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

Open source

Lifecycle for Laravel

Inštalácia
composer require roundly-consulting/lifecycle-for-laravel
Vyžaduje: PHP ^8.4 · Laravel ^12.0|^13.0

Prehľad

Stavové životné cykly — stavový automat — pre akýkoľvek Eloquent model so stavom: objednávky, tikety, inzeráty, predplatné či žiadosti. Stavy modelu a pomenované prechody medzi nimi deklarujete raz v malej triede definície — každý presun potom prejde jednou pipeline kontrol, ktorá overí, kto smie konať, limity a kvóty odolné voči súbehu, a zapíše riadok do histórie, ktorú nemožno meniť. Expirácia, upozornenia „čoskoro vyprší“, plánované prechody a rollbacky sú zabudované a každé zamietnutie je štruktúrovaný, preložený dôvod, ktorý zobrazíte priamo v rozhraní. Natívny balík s licenciou MIT, postavený len na Laraveli a vlastných základných balíkoch Roundly — bez závislostí tretích strán.

Čo získate

Deklaratívne definície

Stavy z backed enumu alebo reťazcov, počiatočný a koncové stavy a pomenované prechody so zástupným znakom — aj viac cyklov na jeden model.

Jedna pipeline kontrol

Gate abilities, pravidlá pre aktéra, dôvody, validácia payloadu, vlastné guardy a termíny — každé zamietnutie je štruktúrovaný, preložený Denial.

Limity a kvóty bez súbehu

Maximálny počet, cooldown, minimálny čas v stave, rate limity a kvóty podľa scope, ktoré vydržia aj súbežné požiadavky.

Expirácia a plánovanie

TTL pre každý stav, ochranná lehota, upozornenia len raz, predĺženie a obnovenie a ľubovoľný prechod naplánovaný na neskôr — všetko spustí jeden sweep.

Rollbacky a história

Vráťte posledný prechod alebo sa vráťte k bodu v histórii, s časovým oknom, kompenzáciou a snapshotmi — nad históriou, ktorú nemožno meniť.

Bezpečné pri súbehu

Zámok riadku a zápis cez compare-and-swap pri každom prechode, udalosti po commite, optimistické verzie a idempotentné kľúče.

Fasáda, DI alebo akcie

Jedna fasáda Lifecycles, injektovateľný manažér alebo jednoúčelové akcie — a fake, ktorý odmietne to, čo skutočný engine odmietne aj bez databázy.

Dokumentácia

Inštalácia

Inštalácia cez Composer, voľba typov kľúčov, publikovanie migrácií a naplánovanie sweepu, keď stavy expirujú alebo plánujete prechody.

Konfigurácia

Každý konfiguračný kľúč, predvolená hodnota a env premenná — typy kľúčov, subjekty, striktné zápisy, aktéri, transakcie, história a plány.

Definovanie životného cyklu

Deklarujte stavy, počiatočný a koncové stavy a pomenované prechody v triede definície — každá metóda buildera a spôsob validácie.

Modely so životným cyklom

Implementujte LifecycleSubject, pridajte trait HasLifecycle a priraďte atribúty k definíciám — viac cyklov na model, vzťahy a rezervované názvy.

Fasáda Lifecycles

Prehľad fasády Lifecycles — handle for($model), pomocníci model(), prístupy definitions() a schedules(), sweep a priame zápisy.

DI a akcie

Bez fasády: injektujte LifecycleManager alebo zavolajte jednoúčelovú akciu s request DTO — mapa handle → manažér → akcia.

Aplikovanie prechodov

Aplikujte pomenované prechody s aktérom, dôvodom a payloadom — transitionTo(), attempt(), výsledky, optimistické verzie a idempotentné kľúče.

Overenie pred akciou

Overte prechod ešte pred aplikovaním — can(), check(), allowedTransitions() a štruktúrované, preložené objekty Decision a Denial.

Obmedzenia a guardy

Pipeline kontrol v poradí — systémový kontext, pravidlá pre aktéra, Gate abilities, dôvody, payload, vlastné guardy — a všetky kódy zamietnutí.

Limity, kvóty a zmrazenie

Maximálny počet, cooldowny, minimálny čas v stave, zapečatenie, rate limity, kvóty podľa scope odolné voči súbehu a zmrazenie cyklu.

Handlery, hooky, stampy a snapshoty

Spúšťajte vedľajšie efekty v transakcii cez handlery a hooky onEnter/onExit, zapisujte časy, zachytávajte atribúty a kompenzujte pri rollbacku.

Expirácia

TTL pre stav z intervalu, closure alebo stĺpca — ochranná lehota, upozornenia len raz, effectiveState() a extend, renew či neverExpire().

Plánované prechody a sweep

Naplánujte ľubovoľný prechod na neskôr a spúšťajte splatné expirácie, upozornenia a plány cez lifecycle:sweep — priamo alebo cez frontu.

Rollbacky a história

Vráťte posledný prechod alebo sa vráťte k bodu v histórii — všetko alebo nič, s oknom, kompenzáciou a snapshotmi — plus nemenná história.

Dotazovanie

Query scopes pre stav, expiráciu, ochrannú lehotu, zmrazenie a čas v stave — plus eager loading cez withLifecycle() proti N+1 dotazom.

Striktné zápisy a drift

Prečo priame zápisy stavu vyhadzujú výnimku, ktoré spôsoby zápisu obchádzajú engine a ako allowDirectWrites() a adopcia zosúladia drift.

Definície a grafy

Prezerajte stavy a prechody cez Lifecycles::model() a definitions() a exportujte diagramy Mermaid alebo DOT cez lifecycle:graph.

API zdroje a validácia

LifecycleResource a TransitionRecordResource pre API, validačné pravidlá ValidTransition a ValidState a 422 či Retry-After zo zamietnutí.

Udalosti

Všetky udalosti, kedy sa odošlú a čo nesú — počúvajte LifecycleTransitioned, nie updated z Eloquentu, a vedľajšie efekty spúšťajte po commite.

Artisan príkazy

make:lifecycle, sweep, graph, validate, show, adopt a prune — signatúry, voľby a kedy ktorý príkaz spúšťať.

Súbežný prístup a databázy

Jedna transakcia a poradie zámkov pri každej zmene, zápis stavu cez compare-and-swap, READ COMMITTED pre kvóty na MySQL, deadlocky a Octane.

Migrácia zo status enumov

Preneste ručne písané status enumy, kontroly a príkazy na balík a presuňte existujúcu tabuľku cez lifecycle:adopt.

Testovanie

Cez Lifecycles::fake() zaznamenáte prechody a zamietate na požiadanie, so všetkými aserciami — alebo testujte skutočný engine s factories.

Požiadavky

PHP 8.4+, Laravel 12 alebo 13 a SQLite, PostgreSQL alebo MySQL/MariaDB — s tabuľkami balíka v tej istej databáze ako vaše modely.

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.