Všetky balíky
Money for Laravel
Migrácia z vlastnej triedy Money
Balík má vlastný namespace RoundlyConsulting\Money a nepoužíva žiadny z bežných pôvodných názvov tried, takže stará aj nová trieda môžu fungovať vedľa seba, kým postupne presúvate volania:
| Pôvodné volanie | Money for Laravel | Poznámka |
|---|---|---|
| Money::of($minor, 'EUR') | Money::ofMinor($minor, 'EUR') | Money::of() zámerne neexistuje. |
| getMinorAmount() / getAmount() vracajúce int | minor() | Kanonický reťazec — minorInt() použite len tam, kde int naozaj potrebujete. |
| getAmount() vracajúce najmenšie jednotky ako reťazec | minor() | Nie toDecimal(). |
| (int) $row->price | Money::ofMinor($row->price, $code) | Surové sumy nikdy nepretypujte — nad int64 PHP stráca presnosť. |
| $a->getAmount() > $b->getAmount() | $a->isGreaterThan($b) | PHP porovnáva číselné reťazce nad int64 cez floaty. |
| getCurrency()->getCode() | currency()->code | — |
| plus() / minus() / times() | add() / subtract() / multiply() | — |
| subtract() orezaný na nulu | Discount::applyTo() | Alebo Money::max([$x->subtract($y), Money::zero($c)]). |
| multiply(float) / divide(float) | multiply('1.19') / divide(Ratio::of(…)) | Alebo percentage('20') — bez floatov. |
| fromMajor(float) | Money::ofMajor('10.50', $code) | Reťazec alebo int; float je TypeError. |
| format($locale) deliace stovkou | format($locale) | Podľa exponentu: JPY 0, BHD 3, vlastné až 18. |
| allocate(list<int>) | allocate(...$ratios) | Variadické inty, celočíselné reťazce alebo desatinné čísla. |
| Float grossDivisor() na sadzbe dane | TaxRate::fromBasisPoints($bp)->netFromGross($gross) | Jeden presný zlomok, jedno zaokrúhlenie. |
| Ručne písané preškálovanie najmenších jednotiek | MinorUnits::rescale() | Alebo MinorUnits::toDecimal(). |
| Konfiguračné inty ako PHP_ROUND_HALF_UP | RoundingModes::fromValue(config('pkg.rounding'), 'pkg.rounding') | Názvy RoundingMode v snake_case. |
Databázové stĺpce
- Existujúce bigint stĺpce so sumami fungujú s AsMoney ďalej; nad int64 zápis odmietne databáza.
- Nové stĺpce: $table->money('price', currency: 'currency') — suma decimal(38, 0) a stĺpec meny.
- Cast ukladá len kód meny, preto musí byť každá uložená mena registrovaná (zoznam ISO alebo currencies.custom).
Floaty na vstupe
Nahraďte (float) $request->input('price') volaním $request->money('price', 'EUR') — JSON 1.1 bude 110 centov, nie 111 — a vopred validujte cez MoneyAmount::in('EUR').
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.