Open source
Money for Laravel
composer require roundly-consulting/money-for-laravelPrehľad
Nemenné peňažné a menové hodnoty s ľubovoľnou presnosťou pre Laravel. Sumy sa uchovávajú presne v najmenších jednotkách meny ako kanonické celočíselné reťazce s aritmetikou bcmath — nikde žiadny float, žiadny strop int64 — a každá stratová operácia zaokrúhľuje presne raz natívnym RoundingMode z PHP 8.4. Okolo tohto jadra dostanete meny ISO 4217 aj vlastné meny, formátovanie a parsovanie podľa lokality, Eloquent casty a makrá schémy, validáciu, zľavy, dane a výmenné kurzy s vymeniteľnými zdrojmi (konfigurácia, databáza, ECB). Licencia MIT a minimum závislostí: ext-bcmath, Laravel a dva základné balíky Roundly — žiadna externá knižnica na peniaze.
Čo získate
Presné najmenšie jednotky
Sumy sú kanonické celočíselné reťazce s aritmetikou bcmath — nikde žiadny float, až 65 číslic, takže sa zmestí aj kryptomena s presnosťou na wei.
Bezpečnosť mien
Pribalený zoznam ISO 4217 (165 mien) plus vlastné meny až s 18 desatinnými miestami. Miešanie mien vyhodí výnimku, prevod je vždy explicitný.
Jedno zaokrúhlenie, férové delenie
Každá stratová operácia zaokrúhľuje presne raz natívnym RoundingMode; allocate() a split() vždy dajú dokopy presne pôvodnú sumu.
Formátovanie a parsovanie
Formátovanie cez ext-intl presné aj nad 15 číslic, deterministický fallback a striktný parser lokalizovaného vstupu.
Eloquent, validácia a HTTP
Casty, makrá schémy $table->money(), pravidlá MoneyAmount a CurrencyCode, Request::money(), makrá kolekcií a @money.
Zľavy a dane
Kombinovateľné zľavy so stropmi, prioritami a exkluzivitou; daňové rozpisy, v ktorých základ + daň vždy presne dá sumu s daňou.
Výmenné kurzy
Drivery config, database, ECB a chain s presnými krížovými kurzami a ochranou pred zastaranými kurzami — cez fasádu Exchange, injektovaný manažér alebo akcie, so zaznamenávajúcim Exchange::fake().
Dokumentácia
Inštalácia
Inštalácia cez Composer; konfiguráciu, migráciu kurzov a validačné hlášky publikujete, len keď ich potrebujete.
Konfigurácia
Každý konfiguračný kľúč a jeho predvolená hodnota — meny, presnosť schémy, zaokrúhľovanie, formátovanie, makrá, kurzy, cache a plán aktualizácie.
Fasády Exchange a Currencies
Exchange prevádza, zisťuje kurzy, spravuje tabuľku uložených kurzov a vie sa nahradiť fake; Currencies číta a rozširuje register mien.
DI a akcie
Namiesto fasád injektujte ExchangeManager alebo kontrakt CurrencyRegistry, prípadne volajte tri akcie pre kurzy priamo s ich DTO.
Objekt Money
Vytvárajte nemenné hodnoty Money z najmenších jednotiek, celých súm či iných škál, čítajte ich presne a bezpečne serializujte do JSON.
Aritmetika a porovnávanie
Aritmetika v rámci jednej meny, ktorá zaokrúhľuje presne raz, hotovostné zaokrúhlenie, presné porovnania a súčet, minimum, maximum a priemer.
Rozdeľovanie súm
Rozdeľte sumy podľa pomerov alebo na rovnaké časti bez straty centu a presne rozpočítajte zľavu objednávky na jednotlivé položky.
Viacmenové súčty
Držte zostatky vo viacerých menách v MoneyBag a spočítajte ich do jednej meny s jediným presným zaokrúhlením.
Sumy a presnosť
Kanonická celočíselná gramatika, pevné limity, most na int64 a správanie peňažných stĺpcov v PostgreSQL, MySQL a SQLite.
Zaokrúhľovanie a pomocné triedy
Osem natívnych režimov zaokrúhľovania, presné hodnoty Ratio a Percentage, pomocník MinorUnits a RoundingModes pre vašu konfiguráciu.
Meny
Pribalený register ISO 4217, vyhľadávanie podľa kódu či číselného kódu, vlastné meny až s 18 desatinnými miestami a povolené meny pre vstup.
Formátovanie a parsovanie
Výstup podľa lokality s FormatOptions, deterministický záložný formátovač, striktný parser lokalizovaného vstupu a direktíva @money.
Eloquent casty a schéma
Castujte atribúty na Money v jednom či dvoch stĺpcoch, vytvárajte presné decimal stĺpce makrami schémy a správne sa nad nimi dopytujte.
Validácia, requesty a kolekcie
Validujte sumy a kódy mien, čítajte peniaze z requestu bez floatov, agregujte kolekcie a vracajte JSON resource.
Zľavy
Percentuálne, pevné zľavy a doprava zdarma so stropmi, prioritami a exkluzivitou, tri stratégie kombinovania a podrobný rozpis.
Dane
Základ, daň a suma s daňou z presných sadzieb s jedným zaokrúhlením na volanie, rozpisy so zaručeným súčtom a súhrny pre faktúry.
Výmenné kurzy
Explicitný prevod cez drivery config, database, ECB či chain, presné krížové kurzy, manuálne kurzy, vlastné drivery a nastavenie pre produkciu.
Príkazy, eventy a plánovanie
Artisan príkazy pre meny a kurzy, plánovaná aktualizácia z ECB, aktualizácia cez frontu, aktualizácia a čistenie z kódu a eventy aktualizácie.
Výnimky
Jedna základná trieda MoneyException a typovaná výnimka pre každé zlyhanie — nezhoda mien, zaokrúhlenie, pretečenie, kurzy a konfigurácia.
Testovanie
Exchange::fake() nasadí statické kurzy a zaznamená aktualizácie, zápisy aj čistenie — overte každé volanie a naplňte tabuľku kurzov.
Migrácia z vlastnej triedy Money
Preveďte volania z vlastnej triedy Money na tento balík — obe môžu fungovať vedľa seba, kým postupne presúvate kód.
Požiadavky
PHP 8.4+ s ext-bcmath a Laravel 12 alebo 13; ext-intl a ext-simplexml sú voliteľné.
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.