Konfigurácia
Každý kľúč má predvolenú hodnotu, takže publikovanie config/lifecycle.php je voliteľné. Publikovaný súbor v plnom znení:
return [
'key_type' => env('LIFECYCLE_KEY_TYPE', 'bigint'),
'actor_key_type' => env('LIFECYCLE_ACTOR_KEY_TYPE', 'bigint'),
'models' => [
'state' => LifecycleState::class,
'transition' => LifecycleTransition::class,
'schedule' => LifecycleSchedule::class,
],
'subjects' => [],
'strict_writes' => env('LIFECYCLE_STRICT_WRITES', true),
'actor' => [
'from_auth' => env('LIFECYCLE_ACTOR_FROM_AUTH', true),
'guard' => env('LIFECYCLE_ACTOR_GUARD'),
],
'transactions' => [
'attempts' => 3,
'mysql_read_committed' => env('LIFECYCLE_MYSQL_READ_COMMITTED', true),
],
'history' => [
'store_payload' => env('LIFECYCLE_HISTORY_STORE_PAYLOAD', true),
'max_context_bytes' => 16384,
'reason_max_length' => 1000,
'purge_on_force_delete' => env('LIFECYCLE_HISTORY_PURGE_ON_FORCE_DELETE', true),
'prune_after_days' => env('LIFECYCLE_HISTORY_PRUNE_AFTER_DAYS'),
],
'rollback' => [
'default_window' => env('LIFECYCLE_ROLLBACK_DEFAULT_WINDOW'),
'max_steps' => 50,
],
'schedules' => [
'batch_size' => 500,
'max_per_run' => 10000,
'max_attempts' => 5,
'retry_after' => '5 minutes',
'queue' => [
'enabled' => env('LIFECYCLE_QUEUE_SWEEPS', false),
'connection' => env('LIFECYCLE_QUEUE_CONNECTION'),
'name' => env('LIFECYCLE_QUEUE'),
],
'prune_after_days' => env('LIFECYCLE_SCHEDULES_PRUNE_AFTER_DAYS', 30),
],
'rate_limits' => [
'prefix' => 'lifecycle',
],
'graph' => [
'default_format' => 'mermaid',
],
];Všetky kľúče
| Kľúč | Predvolené | Env | Účel |
|---|---|---|---|
key_type | bigint | LIFECYCLE_KEY_TYPE | Typ id stĺpcov subjektu, ktoré vytvoria migrácie: bigint, uuid alebo ulid (bez ohľadu na veľkosť písmen). Nastavte pred migráciou; iná hodnota vyhodí výnimku. |
actor_key_type | bigint | LIFECYCLE_ACTOR_KEY_TYPE | Typ id stĺpcov aktéra (kto vykonal prechod, zmrazil, naplánoval): bigint, uuid alebo ulid; iná hodnota vyhodí výnimku. |
models.state | LifecycleState | — | Nahradí model záznamu stavu vašou podtriedou (musí rozširovať LifecycleState). |
models.transition | LifecycleTransition | — | Nahradí model histórie vašou podtriedou (musí rozširovať LifecycleTransition). |
models.schedule | LifecycleSchedule | — | Nahradí model plánov vašou podtriedou (musí rozširovať LifecycleSchedule). |
subjects | [] | — | Vaše modely so životným cyklom. lifecycle:validate bez argumentov overí každý cyklus každého uvedeného modelu vrátane stĺpcov, ktoré definícia menuje. Modely fungujú aj bez uvedenia. |
strict_writes | true | LIFECYCLE_STRICT_WRITES | Uloženie priamo zmeneného atribútu cyklu vyhodí DirectStateWriteException. |
actor.from_auth | true | LIFECYCLE_ACTOR_FROM_AUTH | Bez by() je aktérom prihlásený používateľ. |
actor.guard | null | LIFECYCLE_ACTOR_GUARD | Auth guard pre from_auth (null = predvolený guard). |
transactions.attempts | 3 | — | Koľkokrát sa transakcia po deadlocku zopakuje (1–10) — len ak vonkajšiu transakciu otvoril balík. |
transactions.mysql_read_committed | true | LIFECYCLE_MYSQL_READ_COMMITTED | MySQL/MariaDB: transakcia, ktorá počíta kvótu, beží na READ COMMITTED. Vypnuté: zostane vaša izolácia a počet kvóty použije zamykacie čítania. |
history.store_payload | true | LIFECYCLE_HISTORY_STORE_PAYLOAD | Uloží zvalidovaný payload (bez kľúčov zo sensitive()) do riadku histórie. |
history.max_context_bytes | 16384 | — | Limit veľkosti JSON uloženého kontextu (1024–1048576); väčší sa zamietne ako invalid_payload. |
history.reason_max_length | 1000 | — | Dlhšie dôvody sa zamietnu ako reason_too_long — pri prechodoch, plánoch aj rollbackoch; dlhší dôvod zmrazenia vyhodí InvalidLifecycleUsageException (1–10000). |
history.purge_on_force_delete | true | LIFECYCLE_HISTORY_PURGE_ON_FORCE_DELETE | Trvalé zmazanie subjektu zmaže aj jeho záznamy, históriu a plány. |
history.prune_after_days | null | LIFECYCLE_HISTORY_PRUNE_AFTER_DAYS | Predvolená hodnota lifecycle:prune pre riadky histórie (1–36500; null alebo prázdna hodnota = nikdy). Limity čistenie prežijú, staršie body rollbacku a idempotentné kľúče nie. |
rollback.default_window | null | LIFECYCLE_ROLLBACK_DEFAULT_WINDOW | Ako dlho sa dá prechod vrátiť, ak nedeklaruje vlastné okno („7 days“; null alebo prázdna hodnota = bez obmedzenia). |
rollback.max_steps | 50 | — | Najviac riadkov, ktoré vráti jedno rollbackTo() (1–1000). |
schedules.batch_size | 500 | — | Riadky na jednu dávku sweepu (1–10000). |
schedules.max_per_run | 10000 | — | Najviac plánov, ktoré spracuje jeden beh sweepu (1–1000000). |
schedules.max_attempts | 5 | — | Počet pokusov, kým sa opakovateľný naplánovaný prechod označí ako zlyhaný (1–100). |
schedules.retry_after | 5 minutes | — | Odklad, po ktorom sa zamietnutý, chybný alebo zmrazený naplánovaný prechod skúsi znova. Prázdna hodnota sa považuje za nenastavenú → 5 minutes. |
schedules.queue.enabled | false | LIFECYCLE_QUEUE_SWEEPS | Sweep odošle jeden job na každý splatný plán namiesto behu priamo. |
schedules.queue.connection | null | LIFECYCLE_QUEUE_CONNECTION | Pripojenie fronty pre tieto joby. |
schedules.queue.name | null | LIFECYCLE_QUEUE | Názov fronty pre tieto joby. |
schedules.prune_after_days | 30 | LIFECYCLE_SCHEDULES_PRUNE_AFTER_DAYS | Predvolená hodnota lifecycle:prune pre dokončené plány (1–36500; null alebo prázdna hodnota = nikdy). |
rate_limits.prefix | lifecycle | — | Prefix kľúčov rate limitera pre prechody s rateLimit(); započítava sa do limitu 250 znakov pre kľúč. |
graph.default_format | mermaid | — | Presne mermaid alebo dot — formát grafu, ak nie je zadaný. |
Striktné hodnoty
Každá hodnota sa overí pri čítaní, takže preklep nikdy potichu nevráti predvolenú hodnotu:
- Prázdna hodnota (LIFECYCLE_X= alebo len medzery) sa považuje za nenastavenú: platí predvolená hodnota kľúča a kľúč, ktorý pripúšťa null (LIFECYCLE_HISTORY_PRUNE_AFTER_DAYS=, LIFECYCLE_SCHEDULES_PRUNE_AFTER_DAYS=, LIFECYCLE_ROLLBACK_DEFAULT_WINDOW=), sa číta ako nenastavený (null).
- Boolean hodnoty akceptujú true/false/1/0/yes/no/on/off bez ohľadu na veľkosť písmen (prázdna hodnota dostane predvolenú, takže LIFECYCLE_STRICT_WRITES= striktné zápisy ponechá zapnuté); akákoľvek iná hodnota vyhodí InvalidLifecycleConfigurationException s názvom kľúča aj hodnotou.
- key_type a actor_key_type akceptujú len bigint, uuid alebo ulid (bez ohľadu na veľkosť písmen; prázdna hodnota sa číta ako bigint); čokoľvek iné vyhodí počas migrate a about InvalidConfigurationException z toolkitu — nie LifecycleException, takže ju catch (LifecycleException) nezachytí.
- Čísla musia byť kanonické celé čísla: '5.5', '+5' a '1e3' vyhodia výnimku. Číslo alebo interval mimo rozsahu vyhodí InvalidLifecycleConfigurationException.
- graph.default_format musí byť presne mermaid alebo dot. Vymenený model (models.*) musí byť existujúca trieda, ktorá rozširuje model balíka, inak InvalidLifecycleConfigurationException — nikdy sa nevráti k modelu balíka.
- Hodnota vyhodí výnimku, keď ju niečo prvýkrát prečíta. php artisan about číta typy kľúčov, väčšinu boolean hodnôt, modely aj subjekty, preto ho spúšťajte po každej zmene konfigurácie — preklep sa ukáže hneď.
Registrácia subjektov
Svoje modely so životným cyklom uveďte v subjects, aby mal lifecycle:validate v CI čo kontrolovať. Modely fungujú aj bez uvedenia; ak nie je uvedený žiadny, lifecycle:validate --strict zlyhá namiesto prázdneho úspechu:
// config/lifecycle.php
'subjects' => [
App\Models\Listing::class,
App\Models\Order::class,
],Prostredie (env)
Všetky env premenné, ktoré konfigurácia číta, s predvolenými hodnotami:
LIFECYCLE_KEY_TYPE=bigint
LIFECYCLE_ACTOR_KEY_TYPE=bigint
LIFECYCLE_STRICT_WRITES=true
LIFECYCLE_ACTOR_FROM_AUTH=true
LIFECYCLE_ACTOR_GUARD=
LIFECYCLE_MYSQL_READ_COMMITTED=true
LIFECYCLE_HISTORY_STORE_PAYLOAD=true
LIFECYCLE_HISTORY_PURGE_ON_FORCE_DELETE=true
LIFECYCLE_HISTORY_PRUNE_AFTER_DAYS=
LIFECYCLE_ROLLBACK_DEFAULT_WINDOW=
LIFECYCLE_QUEUE_SWEEPS=false
LIFECYCLE_QUEUE_CONNECTION=
LIFECYCLE_QUEUE=
LIFECYCLE_SCHEDULES_PRUNE_AFTER_DAYS=30Prejavte 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.