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

Balík vyhadzuje dve vlastné výnimky so spoločným základom, niekoľko výnimiek z money-for-laravel prepúšťa bez obalenia, pri chybnom nastavení vyhodí InvalidConfigurationException z package-toolkit a vo vašich vlastných transakciách k vám môže doraziť DeadlockException z Laravelu:

VýnimkaKedy vznikne
CreditsExceptionZákladná trieda (RuntimeException) pre InsufficientCreditsException a BucketNotDenominatedException — zachyťte ju, ak chcete ošetriť akékoľvek zlyhanie kreditov.
InsufficientCreditsExceptionOdpis by skupinu dostal pod minimum_balance a prečerpanie nie je povolené. Nesie $creditable, $requested (so znamienkom) a $available; správa z credits::messages.insufficient.
BucketNotDenominatedExceptionVolanie pre Money — money(), addMoney(), deductMoney(), modifyMoney() alebo formatMoney() na scope, prípadne creditsBalanceMoney(), modifyCreditsMoney() či formatCreditsBalance() z traitu — na skupinu, ktorá nie je v credits.currencies. Nesie $bucket (vyhodnotený názov); správa z credits::messages.not_denominated.
InvalidArgumentExceptionadd() alebo deduct() (či addMoney() / deductMoney()) dostali zápornú sumu — na zmenu so znamienkom použite modify().
CurrencyMismatchZ money: modifyCreditsMoney() dostala Money v inej mene (kód + exponent).
AmountOverflowZ money: suma Money sa nezmestí do 64-bitového stĺpca so znamienkom.
UnknownCurrencyZ money: credits.currencies priraďuje skupine kód, ktorý register nepozná.
InvalidMoneyConfigurationZ money: credits.currencies má chybný tvar alebo credits.rounding nepomenúva žiadny režim zaokrúhľovania.
InvalidAmountZ money: škála zobrazenia nad 36 desatinných miest.
InvalidConfigurationExceptionZ package-toolkit: hodnota v konfigurácii má chybný tvar — model, ktorý nie je Credit ani jeho podtrieda, neznámy key_type alebo primary_key_type, allow_overdraft, ktoré nie je boolean, minimum_balance, ktoré nie je celé číslo, default_bucket, ktorá nie je reťazec, scale mimo 0–36 alebo položka modifiable, ktorú nemožno zavolať. Správa uvádza názov kľúča.
DeadlockExceptionZ Laravelu: vo vašej vlastnej DB::transaction() na Postgres pri REPEATABLE READ alebo SERIALIZABLE súbežná zmena toho istého vlastníka (SQLSTATE 40001). Nič sa nezapíše — zopakujte celú transakciu.

Ošetrenie

Zachyťte konkrétne prípady, na ktoré viete reagovať, a potom siahnite po základnej triede:

use RoundlyConsulting\Credits\Exceptions\CreditsException;
use RoundlyConsulting\Credits\Facades\Credits;
use RoundlyConsulting\Credits\Exceptions\InsufficientCreditsException;
use RoundlyConsulting\Money\Exceptions\AmountOverflow;
use RoundlyConsulting\Money\Exceptions\CurrencyMismatch;

try {
    Credits::for($user)->bucket('store_credit')->modifyMoney($amount, 'checkout');
} catch (InsufficientCreditsException $e) {
    // not enough in the bucket: $e->requested, $e->available, $e->creditable
} catch (CurrencyMismatch | AmountOverflow $e) {
    // wrong currency, or beyond the 64-bit ledger — nothing was written
} catch (CreditsException $e) {
    // any other credits failure, e.g. BucketNotDenominatedException ($e->bucket)
}

Odmietnutá zmena nikdy nezanechá čiastočný zápis: ochrana pred prečerpaním beží v transakcii zápisu a kontroly meny prebehnú ešte pred jej začiatkom.

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.