Fasáda Onboarding
Odporúčaným vstupným bodom je RoundlyConsulting\Onboarding\Facades\Onboarding: final, tenká fasáda nad singletonom OnboardingManager — centrálnym úložiskom pomenovaných tokov, resolvera pre subjekty a perzistentného store:
use RoundlyConsulting\Onboarding\Facades\Onboarding;
use RoundlyConsulting\Onboarding\Flow;
use RoundlyConsulting\Onboarding\Step;
// Register flows — usually in a service provider's boot()
Onboarding::register(Flow::make('Profile Onboarding')->of([Step::make('Upload photo')]));
Onboarding::register('user', UserOnboarding::class);
Onboarding::flow('team')->add('Invite your team')->completeWhenHas('members');
// Read for a subject — every call returns its own copy, bound to that subject
Onboarding::for($user)?->percentageCompleted();
Onboarding::for($user, 'team')?->currentStep();
Onboarding::for($user)?->dismiss('add-bio');
// Choose the flow per subject
Onboarding::resolveUsing(fn ($subject) => $subject?->isAdmin() ? 'admin' : 'default');
Onboarding::resolveFor($user);
// Inspect and edit the registry
Onboarding::find('team'); // the registered definition
Onboarding::has('team');
Onboarding::all();
Onboarding::forget('team');
Onboarding::flush();
// Persistence
Onboarding::useStore(DatabaseOnboardingStore::class);
Onboarding::store();
Onboarding::hasStore();Všetky metódy
| Metóda | Vracia | Účel |
|---|---|---|
register($key, $flow = null) | OnboardingManager | Zaregistruje Flow, pole krokov alebo názov triedy Flow — s jedným argumentom pod predvolený kľúč. |
flow($key) | Flow | Vytvorí, zaregistruje a vráti prázdny tok pod kľúčom (existujúci nahradí). |
for($subject, ?string $key = null) | ?Flow | Kópia toku subjektu naviazaná naň — tok pod kľúčom, bez kľúča voľba resolvera, inak predvolený tok. |
find($key, $default = null) | ?Flow | Samotná zaregistrovaná definícia (nenaviazaná), inak $default. |
has($key) | bool | Či je pod kľúčom zaregistrovaný tok. |
forget($key) | OnboardingManager | Odstráni jeden tok. |
flush() | OnboardingManager | Odstráni všetky toky a zruší resolver. |
all() | Collection<string, Flow> | Všetky zaregistrované toky podľa kľúča. |
resolveUsing($resolver) | OnboardingManager | Zaregistruje closure, ktorá subjektu priradí kľúč toku. |
resolveFor($subject, ?string $fallback = null) | ?Flow | Kópia toku podľa resolvera naviazaná na subjekt, inak tok pod náhradným kľúčom (default) — bez náhradného kľúča to isté ako for($subject). |
useStore(OnboardingStore|string $store) | OnboardingManager | Nastaví perzistenciu — inštanciu alebo triedu, ktorú kontajner vytvorí pri prvom použití. |
store() / hasStore() | ?OnboardingStore / bool | Používaný store (z useStore(), inak z väzby v kontajneri) / či je nastavený, bez jeho vytvorenia. |
Onboarding::fake() | OnboardingFake | Len na fasáde: nasadí zaznamenávajúci fake — pozrite si Testovanie. |
Metódy assert*() a seed*() z docblocku fasády existujú až po zavolaní Onboarding::fake() — pozrite si Testovanie.
Kópie, nie zdieľané inštancie
for(), resolveFor() aj trait modelu vracajú vlastnú kópiu zaregistrovaného toku naviazanú na subjekt — toky dvoch používateľov nikdy nezdieľajú stav a zaregistrovaná definícia zostáva nenaviazaná. Výnimkou je find(): vráti samotnú definíciu, aby ste do nej mohli pri štarte pridať kroky.
Skratky na modeli
Trait GetsOnboarded aj Flow::dismiss() idú cez ten istý manager, takže sa správajú rovnako a Onboarding::fake() ich vidí. $user->onboarding() je Onboarding::resolveFor($user, $user->defaultOnboardingKey()) — najprv resolver, predvolený kľúč modelu ako náhrada — a $user->resolvedOnboarding() je Onboarding::for($user).
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.