---
title: "DI a akcie — Campaigns for Laravel | Roundly"
description: "Namiesto fasády injektujte CampaignManager alebo priamo spúšťajte akcie prípravy, spustenia, zrušenia a príjemcov — s mapou fasáda → akcia."
url: https://roundly-consulting.com/sk/open-source/navody/campaigns-for-laravel/bez-fasady
language: sk
---

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

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

# DI a akcie

Fasáda je odporúčaná voľba, nie jediná cesta. Tri rovnocenné vstupné body spúšťajú rovnaký kód:

- Fasáda Campaigns — najkratší zápis, ktorý používa celá táto dokumentácia.
- Manažér RoundlyConsulting\\Campaigns\\CampaignManager — koreň fasády, singleton v kontajneri, injektovaný cez konštruktor. Rovnaké API, explicitná závislosť a žiadne statické volania.
- Akcie — jednoúčelové triedy s metódou execute(), ktoré zapojíte do vlastných akcií, jobov a príkazov.

## Injektovanie manažéra

```php
use RoundlyConsulting\Campaigns\CampaignManager;

final class LaunchSpringSale
{
    public function __construct(private CampaignManager $campaigns) {}

    public function __invoke(iterable $subscribers): void
    {
        $campaign = $this->campaigns->create('Spring sale', '<p>50% off</p>')->to($subscribers)->prepare();

        $this->campaigns->start($campaign);
    }
}
```

## Volanie akcie

Každý zápis je akcia. Objekty Campaign a CampaignRecipient zostavte sami a akciu spustite:

```php
use Illuminate\Support\Str;
use RoundlyConsulting\Campaigns\Actions\CancelCampaignAction;
use RoundlyConsulting\Campaigns\Actions\PrepareCampaignAction;
use RoundlyConsulting\Campaigns\Actions\StartCampaignAction;
use RoundlyConsulting\Campaigns\Campaign;
use RoundlyConsulting\Campaigns\CampaignRecipient;

$campaign = app(PrepareCampaignAction::class)->execute(
    new Campaign(uuid: (string) Str::uuid(), subject: 'Spring sale', content: '<p>50% off</p>', fromName: 'Shop', fromAddress: 'no-reply@shop.tld'),
    [new CampaignRecipient(uuid: (string) Str::uuid(), name: 'John Doe', reachableAt: 'john@doe.tld')],
);

app(StartCampaignAction::class)->execute($campaign);
app(CancelCampaignAction::class)->execute($campaign->uuid);
```

## Metóda fasády → akcia

| Akcia | Fasáda |
| --- | --- |
| `PrepareCampaignAction` | `Campaigns::prepare(), create()->prepare()` |
| `StartCampaignAction` | `Campaigns::start(), campaign()->start(), create()->dispatch()` |
| `CancelCampaignAction` | `Campaigns::cancel(), campaign()->cancel(), campaigns:cancel` |
| `MarkRecipientProcessedAction` | `Campaigns::campaign()->markProcessed()` |
| `MarkRecipientFailedAction` | `Campaigns::campaign()->markFailed()` |

Akcie pracujú s hodnotovými objektmi: PrepareCampaignAction::execute(Campaign, iterable $recipients), StartCampaignAction a CancelCampaignAction::execute(Campaign|string), MarkRecipientProcessedAction::execute(Campaign, CampaignRecipient) a MarkRecipientFailedAction::execute(Campaign, CampaignRecipient, string $error).

Campaigns::fake() nahradí manažéra v kontajneri aj za fasádou, takže doň zapisujú injektované manažéry, príkaz campaigns:cancel aj joby doručenia. Akcia, ktorú si sami získate a zavoláte, fake obíde a prebehne naozaj. ChangeCampaignStatusAction — jediný prechod stavu, ktorý zdieľajú akcie životného cyklu a callback dávky — a FinishCampaignAction — to, čo dávka spustí, keď dobehnú všetky joby doručenia — sú @internal, preto ich z vlastného kódu nevolajte.

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