Fasáda Options
Odporúčaným vstupným bodom je RoundlyConsulting\Options\Facades\Options. Zastupuje singleton OptionsManager a každá metóda prijme class-string nastavenia alebo registrovaný kľúč a voliteľne model vlastníka (pre globálne nastavenie ho vynechajte alebo odovzdajte null):
use RoundlyConsulting\Options\Facades\Options;
// Flat verbs: a class-string or a registered key, plus an optional owner
Options::get(ThemeOption::class, $user);
Options::set(ThemeOption::class, 'dark', $user);
Options::many([ThemeOption::class, LocaleOption::class], $user);
Options::all($user);
Options::export($team);
Options::import($json);
// Handles
Options::for($user)->set(ThemeOption::class, 'light'); // PendingOptions — one owner
Options::option(ThemeOption::class)->default(); // OptionContext — one option
Options::key('theme')->set('dark'); // OptionContext by registered key
Options::group(AppearanceSettings::class)->for($user)->all(); // PendingGroup — a settings screen
// Registry, observers, access control, config bridge, cache
Options::register(['theme' => ThemeOption::class]);
Options::observe(ThemeOption::class, RecompileThemeListener::class);
Options::withoutAuthorization(fn () => Options::set(MaintenanceModeOption::class, true));
Options::overrides('app.name', AppNameOption::class);
Options::flushCache();Všetky metódy
| Metóda | Vracia | Čo robí |
|---|---|---|
get($option, $owner = null) | mixed | Typovaná hodnota, alebo default(), ak nie je nič uložené. |
set($option, $value, $owner = null) | void | Overí, pretypuje a uloží hodnotu. |
has($option, $owner = null) | bool | Či je pre daný rozsah uložená hodnota. |
forget($option, $owner = null) / reset(…) | void | Zmaže uloženú hodnotu; reset() je alias. |
remember($option, Closure $callback, $owner = null) | mixed | Uložená hodnota, alebo ju vypočíta, uloží a vráti. |
resolve($option, $owner = null) | OptionInterface | Inštancia nastavenia naviazaná na vlastníka. |
many(array $options, $owner = null) | array | Viac hodnôt naraz, s kľúčmi podľa toho, čo ste odovzdali. |
setMany(array $values, $owner = null) | void | Viac zápisov naraz, všetko alebo nič: každá hodnota sa najprv autorizuje a overí, potom sa zapíšu v jednej transakcii. |
all($owner = null) | Collection | Všetky uložené hodnoty rozsahu, surovo key => value, jedným dopytom. Pri zapnutom riadení prístupu vynechá, čo používateľ čítať nesmie. |
export($owner = null, bool $globalOnly = false) | list<OptionPayload> | Uložené nastavenia ako surové payloady — jedného vlastníka, všetky alebo iba globálne. |
exportJson($owner = null, bool $globalOnly = false) | string | export() ako JSON pole riadkov. |
import(array|string $payload) | int | Vloží alebo aktualizuje z JSON, dekódovaných riadkov či OptionPayloadov; vráti počet. |
for(?Model $owner) | PendingOptions | Handle viazaný na vlastníka; for(null) je globálny rozsah. |
option($option) / key($key) | OptionContext | Handle pre jedno nastavenie, cez class-string alebo registrovaný kľúč. |
group($group, $owner = null) | PendingGroup | Skupina nastavení: all(), set(), definition(), options(). |
register(array $options) / registered() | void / array | Pridá mapovanie key => trieda za behu; vráti register. |
resolveClass($option) | class-string | Prevedie kľúč alebo triedu na class-string nastavenia. |
observe($option, $callback) | void | Pripojí cielený observer (closure alebo invokable trieda). |
forgetObservers($option) / flushObservers() | void | Odstráni observery jedného nastavenia alebo všetky. |
actingAs(?Authenticatable $user, Closure $callback) | mixed | Spustí callback s autorizáciou za daného používateľa. |
withoutAuthorization(Closure $callback) | mixed | Spustí callback bez riadenia prístupu. |
overrides($configKey, $option) | void | Namapuje kľúč config() na nastavenie a hneď ho aplikuje. |
configOverrides() / applyConfigOverrides() | array / void | Aktívna mapa prepojenia s konfiguráciou; znova aplikuje všetky mapovania. |
flushCache() | void | Vyprázdni pamäť requestu aj trvalú cache, na akomkoľvek úložisku. |
fake() | OptionsFake | Iba na fasáde: nasadí zaznamenávajúci fake v pamäti (pozri Testovanie). |
Metódy assert*() uvedené v docblocku fasády existujú až po zavolaní Options::fake() — pozri Testovanie.
Jeden manager za každou cestou
Fasáda, handly for() / option() / key() / group(), inštancie nastavení, trait HasOptions aj helper options() vedú do tých istých metód OptionsManager. Zvoľte zápis, ktorý sa vám číta najlepšie — validácia, casty, cache, autorizácia aj eventy fungujú všade rovnako:
// One OptionsManager behind every spelling — identical behaviour, all visible to Options::fake()
Options::set(ThemeOption::class, 'dark', $user); // the facade
Options::for($user)->set(ThemeOption::class, 'dark'); // a handle
ThemeOption::for($user)->set('dark'); // an option instance
$user->option(ThemeOption::class)->set('dark'); // the HasOptions trait
options()->set(ThemeOption::class, 'dark', $user); // the helperPrejavte 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.