NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky

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

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:

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: '[email protected]'),
    [new CampaignRecipient(uuid: (string) Str::uuid(), name: 'John Doe', reachableAt: '[email protected]')],
);

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

Metóda fasády → akcia

AkciaFasáda
PrepareCampaignActionCampaigns::prepare(), create()->prepare()
StartCampaignActionCampaigns::start(), campaign()->start(), create()->dispatch()
CancelCampaignActionCampaigns::cancel(), campaign()->cancel(), campaigns:cancel
MarkRecipientProcessedActionCampaigns::campaign()->markProcessed()
MarkRecipientFailedActionCampaigns::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

Odoslaní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.