Všetky balíky
Enums for Laravel
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ť:
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
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:
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 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.