NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
Credits for Laravel

Desatinné kredity a zobrazenie

Kredity sa ukladajú ako celé čísla, aby nevznikali odchýlky pohyblivej čiarky. Desatinné kredity reprezentujete tak, že uloženú hodnotu beriete ako najmenšie jednotky a scale nastavíte na počet desatinných miest — pri scale = 2 znamená uložených 150 hodnotu 1.50 kreditu. Ukladajte a odpisujte najmenšie jednotky; úložisko ostáva bigInteger a základná matematika sa nemení.

Pomocníky zobrazenia

Credits::for($user)->format() naformátuje zostatok jednej skupiny a Credits::format() ľubovoľnú celočíselnú sumu. Obe vracajú čistý desatinný reťazec bez lokalizácie — bez oddeľovačov tisícov; ak ich potrebujete, obaľte výsledok pomocníkom Number z Laravelu:

config(['credits.scale' => 2]);

Credits::for($user)->format();                        // the default bucket's balance, e.g. "1234.50"
Credits::for($user)->bucket('promotional')->format(scale: 0, rounding: \RoundingMode::HalfEven);

Credits::format(123450);                              // "1234.50" — any integer amount, no model needed

Na modeli sú ich podobou z traitu displayCreditsBalance() a displayCredits():

config(['credits.scale' => 2]);

$user->modifyCredits(123450);            // stores 123450 minor units

$user->displayCreditsBalance();          // "1234.50"  (a single bucket's balance)
$user->displayCredits(123450);           // "1234.50"  (format any integer amount)
$user->displayCredits(-123450);          // "-1234.50"
$user->displayCredits(5);                // "0.05"

Prepísanie škály a zaokrúhľovania

Všetky pomocníky prijímajú voliteľnú škálu pre jedno volanie (počet zobrazených desatinných miest) a režim zaokrúhľovania. Ak je požadovaná škála menšia ako uložená, odrezané číslice sa zaokrúhlia raz podľa režimu — natívneho \RoundingMode, predvolene config('credits.rounding'). displayCreditsBalance() prijíma aj okamih:

$user->displayCredits(123450, scale: 0);                                          // "1235"
$user->displayCredits(123450, scale: 0, rounding: \RoundingMode::HalfTowardsZero); // "1234"
$user->displayCredits(1250, scale: 0, rounding: \RoundingMode::HalfEven);          // "12"
$user->displayCredits(1350, scale: 0, rounding: \RoundingMode::HalfEven);          // "14"

$user->displayCreditsBalance(bucket: 'promotional', scale: 0, at: now()->subWeek());

Všetky režimy zaokrúhľovania podľa názvu v konfigurácii:

credits.roundingArgument rounding:Správanie
half_away_from_zero\RoundingMode::HalfAwayFromZeroPolovice od nuly (predvolené).
half_towards_zero\RoundingMode::HalfTowardsZeroPolovice k nule.
half_even\RoundingMode::HalfEvenPolovice k najbližšej párnej číslici — bankárske zaokrúhľovanie.
half_odd\RoundingMode::HalfOddPolovice k najbližšej nepárnej číslici.
towards_zero\RoundingMode::TowardsZeroVždy oreže smerom k nule.
away_from_zero\RoundingMode::AwayFromZeroVždy zaokrúhli od nuly.
positive_infinity\RoundingMode::PositiveInfinityVždy nahor (strop).
negative_infinity\RoundingMode::NegativeInfinityVždy nadol (podlaha).

Presne pri akejkoľvek veľkosti

Škála zobrazenia väčšia ako uložená sa vykreslí presne — prepočet beží v money-for-laravel na celočíselných reťazcoch s ľubovoľnou presnosťou, takže ani PHP_INT_MAX sa nikdy nezmení na float:

config(['credits.scale' => 0]);

$user->displayCredits(PHP_INT_MAX, scale: 6); // "9223372036854775807.000000"

Škála zobrazenia je obmedzená na 36 desatinných miest; zápornú škálu balík berie ako nulu.

Zobrazenie súčtov

Samostatné metódy na zobrazenie súčtov neexistujú — poskladajte ich zo súčtov:

$user->displayCredits($user->totalCreditsBalance());                               // formatted grand total
$user->displayCredits($user->creditsBalanceForBuckets(['promotional', 'purchased']));

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.