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

Metóda fasády → akcia

Volanie fasádyAkcia
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 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.