---
title: "Fasáda Lifecycles — Lifecycle for Laravel | Roundly"
description: "Prehľad fasády Lifecycles — handle for($model), pomocníci model(), prístupy definitions() a schedules(), sweep a priame zápisy."
url: https://roundly-consulting.com/sk/open-source/navody/lifecycle-for-laravel/fasada
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Lifecycle for Laravel](https://roundly-consulting.com/sk/open-source/navody/lifecycle-for-laravel.md)

# Fasáda Lifecycles

Všetko ide cez jednu fasádu, RoundlyConsulting\\Lifecycle\\Facades\\Lifecycles (zaregistrovanú aj ako globálny alias Lifecycles). for($model) vráti handle na jeden cyklus jedného subjektu, model() pracuje s triedou modelu, definitions() a schedules() združujú operácie s definíciami a plánmi a niekoľko plochých slovies spúšťa úlohy pre celý balík:

```php
use RoundlyConsulting\Lifecycle\Facades\Lifecycles;

// A handle per subject (and lifecycle), carrying the call's context
Lifecycles::for($listing)->by($user)->because('Back in stock')->apply('reopen');
Lifecycles::for($order, 'payment_status')->apply('authorize');

// Ask before acting
Lifecycles::for($listing)->by($user)->can('close');

// Time: schedules, expiry and freezes
Lifecycles::for($listing)->by($editor)->schedule('publish', $publishAt);
Lifecycles::for($listing)->renew();
Lifecycles::for($listing)->by($moderator)->because('Under review')->freeze(until: now()->addDays(3));

// Undo
Lifecycles::for($listing)->by($user)->rollback();

// Model-level helpers, definitions, schedules and the sweep
Lifecycles::model(Listing::class)->graph();
Lifecycles::definitions()->validate(ListingLifecycle::class);
Lifecycles::schedules()->due();
Lifecycles::sweep();

// Deliberate direct writes, adopted at once
Lifecycles::allowDirectWrites(fn () => $listing->update(['status' => ListingStatus::Closed]));
```

## Ploché metódy

| Metóda | Vracia | Čo robí |
| --- | --- | --- |
| `for($model, ?$lifecycle)` | `LifecycleHandle` | Handle na jeden cyklus subjektu (prvý deklarovaný, ak žiadny neuvediete). |
| `model(Model::class, ?$lifecycle)` | `ModelLifecycle` | Pomocníci na úrovni triedy: stavy, počiatočný a koncové stavy, prechody, graf, hromadná adopcia. |
| `definitions()` | `DefinitionsAccessor` | Skompilované definície, validácia, grafy a nakonfigurované subjekty. |
| `schedules()` | `SchedulesAccessor` | Spustí splatné plány, pošle upozornenia, vypíše splatné plány, zopakuje zlyhaný plán. |
| `sweep(?$limit, ?$queue, ?$connection)` | `SweepResult` | Upozornenia, potom všetky splatné expirácie a plány — to isté ako lifecycle:sweep. Null pre queue sa riadi schedules.queue.enabled; null pre connection spracuje predvolené databázové pripojenie. |
| `prune(PruneOptions)` | `PruneResult` | Zmaže staré riadky histórie a dokončené plány. |
| `adopt($model, ?$lifecycle) / adoptAll(Model::class, ?$lifecycle, $chunk, $scheduleExpiry)` | `bool / int` | Zosúladí jeden subjekt alebo všetky riadky modelu s uloženým stavom. |
| `allowDirectWrites(fn () => …)` | `mixed` | Spustí kód, ktorý zapisuje atribúty cyklu priamo; zmena sa pri uložení prevezme. |
| `fake()` | `LifecycleFake` | Vymení manažéra za nahrávací fake (pozri Testovanie). |
| `apply(TransitionRequest), check(), rollback(RollbackRequest), …` | `—` | Vrstva s request DTO — pozri DI a akcie. |

## Handle for($model)

Lifecycles::for($model, ?$lifecycle) vráti nemenný LifecycleHandle; null vyberie prvý cyklus z lifecycleDefinitions(). Každá kontextová metóda vráti nový handle, takže handle môžete bezpečne zdieľať. Model, ktorý nie je LifecycleSubject, vyhodí UnknownLifecycleException a rovnako aj nedeklarovaný cyklus.

| Metóda | Vracia | Čo robí |
| --- | --- | --- |
| `by(?$actor), asSystem(), because(?$reason), with(array $payload), expectingVersion(int), idempotencyKey(string)` | `LifecycleHandle` | Kontext pre ďalšie volania — každá vráti nový handle; platí posledné z by() / asSystem(). |
| `apply($transition) / transitionTo($state)` | `TransitionResult` | Aplikuje podľa názvu alebo jediný prechod do cieľového stavu. Vyhodí TransitionDeniedException. |
| `attempt($transition)` | `TransitionAttempt` | Ako apply(), no zamietnutie vráti namiesto vyhodenia. |
| `can($transition) / canTransitionTo($state)` | `bool` | Bolo by to teraz povolené? |
| `check($transition) / checkTransitionTo($state)` | `Decision` | Úplné, informatívne rozhodnutie so všetkými zamietnutiami. |
| `allowedTransitions(includeDenied: false) / allowedStates()` | `list` | Objekty AvailableTransition (s includeDenied aj zamietnuté) alebo dosiahnuteľné stavy. |
| `state() / effectiveState() / is(...$states) / isTerminal()` | `state / bool` | Atribút modelu tak, ako je načítaný (bez opätovného čítania z databázy), stav po spustení oneskorenej expirácie, príslušnosť, koncovosť. |
| `enteredAt() / version() / definition()` | `?CarbonImmutable / int / CompiledDefinition` | Čas vstupu do aktuálneho stavu, verzia záznamu, skompilovaná definícia. |
| `history($limit = 50) / lastTransition()` | `Collection / ?TransitionRecord` | Riadky histórie, najnovšie prvé. |
| `rollback(force: false) / rollbackTo($record, force: false)` | `RollbackResult` | Vráti posledný prechod alebo všetko po riadku histórie — všetko alebo nič. |
| `canRollback() / canRollbackTo($record)` | `Decision` | Bol by rollback teraz povolený? |
| `freeze(until: null) / unfreeze() / isFrozen() / frozenUntil() / frozenReason()` | `bool / …` | Zmrazí tento cyklus (zaznamená sa dôvod a aktér handlu) a prečíta zmrazenie. |
| `schedule($transition, $at) / cancelScheduled($transition) / scheduled()` | `ScheduledTransition / bool / list` | Spustí prechod neskôr, zruší ho, vypíše otvorené plány. |
| `retryScheduled($transition)` | `bool` | Vráti najnovší zlyhaný plán prechodu tohto subjektu späť medzi čakajúce (expiráciu podľa jej expiračného prechodu), na pripojení subjektu. |
| `expiresAt() / isExpired() / isInGrace() / isExpiringWithin($interval)` | `?CarbonImmutable / bool` | Čítanie čakajúcej expirácie. |
| `expireAt($at) / extend($by) / renew(?$for) / neverExpire()` | `CarbonImmutable / bool` | Zmena expirácie aktuálneho pobytu v stave. |
| `adopt()` | `bool` | Zosúladí tento subjekt s uloženým stavom hneď. |

## Lifecycles::model()

Pomocníci na úrovni triedy pre jeden cyklus modelu:

| Metóda | Vracia | Čo robí |
| --- | --- | --- |
| `definition()` | `CompiledDefinition` | Skompilovaná definícia. |
| `states() / initial() / terminal()` | `list / state / list` | Deklarované, počiatočný a koncové stavy. |
| `transitions()` | `list<TransitionDefinition>` | Všetky prechody v poradí deklarácie. |
| `graph(?GraphFormat)` | `string` | Diagram v Mermaid alebo DOT. |
| `adopt(chunk: 500, scheduleExpiry: true)` | `int` | Zosúladí všetky riadky modelu; vráti počet zmenených (= lifecycle:adopt). |

## Lifecycles::definitions()

| Metóda | Vracia | Čo robí |
| --- | --- | --- |
| `get($definitionClass)` | `CompiledDefinition` | Skompiluje (raz za proces) a vráti definíciu. |
| `of($model, ?$lifecycle)` | `CompiledDefinition` | Definícia za cyklom modelu. |
| `validate($definitionClass)` | `ValidationReport` | isValid(), errors(), warnings() — bez vyhodenia výnimky. |
| `graph($definitionClass, ?GraphFormat)` | `string` | Diagram v Mermaid alebo DOT. |
| `subjects() / registered()` | `list` | config('lifecycle.subjects') a definície za nimi. |
| `flush()` | `void` | Zahodí skompilované definície (testy, ktoré cyklus predefinujú). |

## Lifecycles::schedules()

| Metóda | Vracia | Čo robí |
| --- | --- | --- |
| `runDue(?$limit, ?$queue, ?$connection)` | `SweepResult` | Spustí splatné plány, bez upozornení. |
| `warn(?$limit, ?$connection)` | `int` | Pošle splatné upozornenia na expiráciu; vráti ich počet. |
| `retry($scheduleId, ?$connection)` | `bool` | Zlyhaný → čakajúci, pokusy sa vynulujú. Id plánov platia v rámci databázového pripojenia. |
| `due(?$now, $limit = 100, ?$connection)` | `Collection<ScheduledTransition>` | Čakajúce plány splatné do teraz, najstaršie prvé. Len na čítanie. |
| `failed($limit = 100, ?$connection)` | `Collection<ScheduledTransition>` | Zlyhané plány, naposledy zlyhané prvé — s ich subjektom a výsledkom. |

Skratky traitu HasLifecycle ($listing->transition(), $listing->lifecycle()->…) volajú toho istého manažéra, takže všetko uvedené — vrátane Lifecycles::fake() — platí aj pre ne.

## 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](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## 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.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/lifecycle-for-laravel.md)
