Fasáda Addresses
Fasáda Addresses je odporúčaný vstupný bod. Addresses::for($owner) vráti adresár vlastníka — funguje na akomkoľvek Eloquent modeli, bez traitu — a operácie, ktoré vlastníka nepotrebujú, sú ploché:
use RoundlyConsulting\Addresses\DataTransferObjects\AddressData;
use RoundlyConsulting\Addresses\Enums\AddressType;
use RoundlyConsulting\Addresses\Facades\Addresses;
// One owner's address book — any Eloquent model, no trait required.
$book = Addresses::for($supplier);
$book->new() // fluent PendingAddress
->type(AddressType::Work)
->in('Bratislava')->at('Somewhere 1')->postalCode('81101')->country('SK')
->save();
$book->add(AddressData::make(city: 'Košice', street: 'Main 2', postalCode: '04001', countryIso: 'SK'));
$book->all(); // Collection<Address>, oldest first
$book->primary(); // primary across all types (or null)
$book->primary(AddressType::Billing); // primary of a type
$book->ofType(AddressType::Office); // collection of a type
$book->setPrimary($address); // promote; refuses another owner's or a deleted address
$book->update($address, $data); // owner-checked full write
$book->delete($address); // owner-checked soft delete
// One address — unscoped, any owner.
Addresses::update($address, $data); // full write, dispatches AddressUpdated
Addresses::delete($address); // soft delete, dispatches AddressDeleted
Addresses::types(); // the configured type keys
Addresses::typeLabel('billing'); // 'Billing'
Addresses::countryName('sk'); // resolved name, or 'SK' without a resolverMetódy fasády
| Metóda | Vracia | Čo robí |
|---|---|---|
Addresses::for(Model $addressable) | AddressBook | Adresár vlastníka — vytvára, pridáva, číta a povyšuje jeho adresy. |
Addresses::update(Address $address, AddressData $data) | Address | Úplný zápis akejkoľvek adresy, bez kontroly vlastníka; isPrimary: true ju povýši, bez neho stratí primárny príznak. Odošle AddressUpdated a pri povýšení PrimaryAddressChanged. |
Addresses::delete(Address $address) | void | Mäkko zmaže akúkoľvek adresu, bez kontroly vlastníka; odošle AddressDeleted. |
Addresses::types() | list<string> | Kľúče typov nakonfigurované v addresses.types — predvolene šesť vstavaných. |
Addresses::typeLabel(AddressType|string $type) | string | Popisok typu: nakonfigurovaný, preložený (dodáva sa angličtina a slovenčina), inak kľúč prevedený na nadpis. |
Addresses::countryName(string $iso) | string | Zistený názov krajiny, bez resolvera normalizovaný ISO kód. |
Addresses::fake() | AddressesFake | Nahradí manažéra zaznamenávajúcim fake (pozrite Testovanie). |
Adresár
Všetky čítania a zápisy jedného vlastníka sú na jeho AddressBook. Na modeli s HasAddresses vráti ten istý objekt aj $model->addressBook():
| Metóda AddressBook | Vracia | Čo robí |
|---|---|---|
new() | PendingAddress | Spustí fluentný builder naviazaný na tohto vlastníka. |
add(AddressData $data) | Address | Vytvorí adresu z DTO; odošle AddressCreated a ak ju isPrimary povýši, aj PrimaryAddressChanged. |
all() | Collection<int, Address> | Všetky adresy vlastníka, od najstaršej. |
primary(AddressType|string|null $type = null) | ?Address | Primárna adresa daného typu (prípad enumu alebo kľúč), alebo prvá primárna adresa ľubovoľného typu. |
ofType(AddressType|string $type) | Collection<int, Address> | Všetky adresy daného typu (prípad enumu alebo kľúč, bez kontroly voči addresses.types), od najstaršej. |
update(Address $address, AddressData $data) | Address | Addresses::update() pre jednu z adries tohto vlastníka; ak uložený záznam patrí inému vlastníkovi alebo by ho zápis inému vlastníkovi presunul, vyhodí AddressOwnershipException a nezapíše nič. |
delete(Address $address) | void | Addresses::delete() pre jednu z adries tohto vlastníka; rovnaká kontrola vlastníctva aj výnimka. |
setPrimary(Address $address) | Address | Povýši jednu z adries tohto vlastníka; pri adrese iného vlastníka vyhodí AddressOwnershipException, pri mäkko zmazanej TrashedAddressException. |
Čítania sa pýtajú nakonfigurovaného modelu adresy cez whereMorphedTo('addressable', $model), takže rešpektujú vlastný model a vynechávajú mäkko zmazané záznamy.
Addresses::update() a Addresses::delete() prijmú akúkoľvek adresu. Ak volajúci kód pozná vlastníka — request viazaný na zákazníka či tenanta — použite namiesto nich update() a delete() z adresára: vlastníka uloženého záznamu porovnajú podľa morph typu aj kľúča, načítaného pod zámkom, takže neprejde ani podvrhnutá kópia, ani záznam medzitým presunutý inému vlastníkovi.
Alias
Fasáda je predvolene zaregistrovaná ako globálny alias Addresses; premenujete alebo vypnete ju konfiguračným kľúčom facade_alias (pozrite Konfigurácia). Ak sa statickým volaniam chcete vyhnúť úplne, injektujte AddressManager alebo spustite akciu — pozrite DI a akcie.
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.