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