---
title: "Observery — Options for Laravel | Roundly"
description: "Reagujte na zmenu jedného konkrétneho nastavenia — closures alebo invokable triedy, spúšťané pri set a forget v poradí registrácie."
url: https://roundly-consulting.com/sk/open-source/navody/options-for-laravel/observery
language: sk
---

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

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

# Observery

Observery reagujú na zmenu jedného konkrétneho nastavenia — bez globálneho listenera, ktorý filtruje podľa kľúča. Registrujte ich v metóde boot() service providera:

```php
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Cache;
use RoundlyConsulting\Options\DataTransferObjects\OptionChange;
use RoundlyConsulting\Options\Enums\OptionChangeType;
use RoundlyConsulting\Options\Facades\Options;

Options::observe(ThemeOption::class, function (mixed $value, ?Model $owner, OptionChange $change): void {
    // $change->type is OptionChangeType::Set or ::Forgotten
    Cache::forget('compiled-theme');
});

// Invokable class-string (resolved from the container), registered by key:
Options::observe('theme', RecompileThemeListener::class);

Options::forgetObservers(ThemeOption::class); // drop one option’s observers
Options::flushObservers();                    // drop them all
```

## Invokable observery

Observer zadaný ako class-string sa pri každej zmene vytvorí z kontajnera, takže funguje constructor injection:

```php
use Illuminate\Database\Eloquent\Model;
use RoundlyConsulting\Options\DataTransferObjects\OptionChange;

final class RecompileThemeListener
{
    public function __construct(private ThemeCompiler $compiler) {}

    public function __invoke(mixed $value, ?Model $owner, OptionChange $change): void
    {
        $this->compiler->compileFor($owner);
    }
}
```

Class-string bez \_\_invoke vyhodí pri registrácii InvalidOptionObserver.

## Údaje o zmene

Každý observer dostane (mixed $value, ?Model $owner, OptionChange $change):

| Vlastnosť | Typ | Význam |
| --- | --- | --- |
| `key` | string | key() daného nastavenia. |
| `optionClass` | class-string | Trieda nastavenia, ktoré sa zmenilo. |
| `type` | OptionChangeType | OptionChangeType::Set alebo OptionChangeType::Forgotten. |
| `value` | mixed | Nová hodnota po caste — tá istá, ktorú vráti get(). Pri zabudnutom nastavení null. |
| `owner` | ?Model | Rozsah, ktorý sa zmenil — pre globálny rozsah null. |

## Pravidlá

- Observery sa spúšťajú pri set() a forget() v poradí registrácie — nikdy pri čítaní.
- Registrácia cez class-string aj cez kľúč z registra cieli na to isté nastavenie.
- Volá ich priamo zápis — nevisia na OptionSet / OptionForgotten —, takže bežia aj pri vypnutom options.events.enabled, pod Event::fake() týchto eventov aj pod Options::fake().
- Podobne ako eventy sa spustia, až keď je zápis trvalý — v transakcii po commite tej najvonkajšej a pri zápise vrátenom rollbackom vôbec.

## 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/options-for-laravel.md)
