DI a akcie
Fasáda je len skratka — k dispozícii sú tri rovnocenné vstupné body a výber je na vás:
- Fasáda Contacts — najkratší zápis a odporúčaná voľba.
- Manažér injektovaný cez konštruktor — rovnaké API ako explicitná závislosť, bez statických volaní. RoundlyConsulting\Contacts\ContactsManager je koreňom fasády a je zaregistrovaný ako singleton.
- Akcie — jednoúčelové triedy s metódou execute(), ktoré zapojíte do vlastných akcií, jobov a príkazov.
Injektovanie manažéra
Contacts::fake() vymení väzbu manažéra, takže sa zaznamená aj kód so závislosťou v konštruktore:
use App\Models\User;
use RoundlyConsulting\Contacts\ContactsManager;
use RoundlyConsulting\Contacts\Models\Contact;
final readonly class AddWorkEmail
{
public function __construct(private ContactsManager $contacts) {}
public function __invoke(User $user, string $email): Contact
{
$contact = $this->contacts->for($user)->email($email)->label('Work')->primary()->add();
$this->contacts->verification()->request($contact);
return $contact;
}
}Spustenie akcie
Každý zápis cez fasádu zodpovedá jednej akcii, ktorá sa získa z kontajnera:
| Volanie fasády | Akcia |
|---|---|
for($owner)->…->add(), for($owner)->add($data) | AddContactAction::execute($owner, $data) |
for($owner)->sync($type, $items) | SyncContactsAction::execute($owner, $type, $items) |
update($contact, $data) | UpdateContactAction::execute($contact, $data) |
delete($contact) | DeleteContactAction::execute($contact) |
setPrimary($contact) | SetPrimaryContactAction::execute($contact) |
verification()->request($contact) | RequestContactVerificationAction::execute($contact) |
verification()->confirm($contact, $token) | ConfirmContactVerificationAction::execute($contact, $token) |
verification()->markVerified($contact, $at) | VerifyContactAction::execute($contact, $at) |
use RoundlyConsulting\Contacts\Actions\AddContactAction;
use RoundlyConsulting\Contacts\Actions\RequestContactVerificationAction;
use RoundlyConsulting\Contacts\DataTransferObjects\ContactData;
use RoundlyConsulting\Contacts\Enums\ContactType;
$contact = app(AddContactAction::class)->execute($user, new ContactData(ContactType::Email, '[email protected]'));
$token = app(RequestContactVerificationAction::class)->execute($contact);Každá akcia prijíma vlastníka alebo kontakt a podľa potreby DTO ContactData a uplatní rovnakú normalizáciu, validáciu, správu primárnych kontaktov aj udalosti ako fasáda. Akcia zavolaná priamo sa vykoná naozaj — Contacts::fake() zaznamenáva volania, ktoré idú cez manažéra.
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.