Všetky balíky
Addresses for Laravel
DI a akcie
Fasáda je odporúčaná voľba, nie jediná cesta. Rovnaký kód spúšťajú tri vstupy: fasáda Addresses (najkratší zápis), manažér RoundlyConsulting\Addresses\AddressManager — koreň fasády, autowirovaný singleton v kontajneri — injektovaný cez konštruktor (rovnaké API, explicitná závislosť, žiadne statické volania) a akcie (jednoúčelové triedy s execute(), ktoré skladáte do vlastných akcií, jobov a príkazov).
Injektovanie manažéra
use App\Models\User;
use RoundlyConsulting\Addresses\Actions\CreateAddressAction;
use RoundlyConsulting\Addresses\Address;
use RoundlyConsulting\Addresses\AddressManager;
use RoundlyConsulting\Addresses\DataTransferObjects\AddressData;
final class SaveBillingAddress
{
public function __construct(private AddressManager $addresses) {}
public function __invoke(User $user, AddressData $data): Address
{
return $this->addresses->for($user)->add($data);
}
}
app(CreateAddressAction::class)->execute($user, $data); // the raw actionMetóda fasády → akcia
| Volanie fasády | Akcia |
|---|---|
Addresses::for($o)->add($data) / ->new()->…->save() | CreateAddressAction::execute($o, $data) |
Addresses::for($o)->setPrimary($address) | SetPrimaryAddressAction::execute($o, $address) |
Addresses::update($address, $data) | UpdateAddressAction::execute($address, $data) |
Addresses::delete($address) | DeleteAddressAction::execute($address) |
- Každé volanie viazané na vlastníka — z fasády, adresára, buildera či skratky HasAddresses — prejde manažérom, takže ho vidia vaše prepísania aj Addresses::fake().
- Addresses::fake() vymení manažéra aj v kontajneri, takže sa podvrhne aj injektovaný manažér. Akcia zavolaná priamo fake obíde a vykoná sa naozaj.
- Akcie sa získavajú z kontajnera a ako vlastníka prijmú akýkoľvek Eloquent model — trait HasAddresses nie je potrebný.
- PromoteAddressAction je interná — stojí za pravidlom primárnej adresy pri add, update aj setPrimary. Adresu povýšite cez Addresses::for($owner)->setPrimary($address).
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.