---
title: "Podmienené callbacky — Enums for Laravel | Roundly"
description: "whenIs(), whenIsNot(), whenIsIn() a whenIsNotIn() spustia callback len pri splnení podmienky, s voliteľnou predvolenou vetvou."
url: https://roundly-consulting.com/sk/open-source/navody/enums-for-laravel/podmienene-callbacky
language: sk
---

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

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

# Podmienené callbacky

Metódy whenIs\* spustia callback, len ak je podmienka splnená, inak voliteľný predvolený callback. Každá vráti ten istý prípad, takže volania sa dajú reťaziť:

```php
NewsCategory::HotNews
    ->whenIs(NewsCategory::HotNews, fn ($enum) => activate($enum))
    ->whenIsNot(NewsCategory::PrivateNews, fn ($enum) => publish($enum));

NewsCategory::HotNews->whenIsIn(
    [NewsCategory::HotNews, NewsCategory::RegularNews],
    fn ($enum) => notifySubscribers($enum),
    fn ($enum) => archive($enum), // runs when the condition is false
);

NewsCategory::HotNews->whenIsNotIn(
    [NewsCategory::PrivateNews],
    fn ($enum) => index($enum),
);
```

## Signatúry

```php
whenIs(self $enum, Closure $callback, ?Closure $default = null): self
whenIsNot(self $enum, Closure $callback, ?Closure $default = null): self
whenIsIn(array $enums, Closure $callback, ?Closure $default = null): self
whenIsNotIn(array $enums, Closure $callback, ?Closure $default = null): self
```

- Callback dostane prípad enumu; jeho návratová hodnota sa ignoruje.
- Voliteľný $default sa spustí, len keď podmienka nie je splnená; bez neho sa pri nezhode nestane nič.
- Callbacky sú typované ako Closure — arrow funkcie, closures alebo first-class callables ako $this->notify(...).
- Každá metóda vráti samotný prípad, takže reťazenie nikdy nezmení hodnotu, s ktorou ste začali.

## V službe

Vďaka first-class callables zostane logika jednotlivých vetiev v pomenovaných metódach:

```php
use App\Enums\NewsCategory;
use App\Models\Article;

final class ArticlePublisher
{
    public function handle(Article $article): void
    {
        $article->category
            ->whenIs(NewsCategory::HotNews, $this->pin(...))
            ->whenIsNotIn(
                [NewsCategory::PrivateNews],
                $this->announce(...),
                $this->keepInternal(...),
            );
    }

    private function pin(NewsCategory $category): void { /* ... */ }

    private function announce(NewsCategory $category): void { /* ... */ }

    private function keepInternal(NewsCategory $category): void { /* ... */ }
}
```

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