فهرست مستندات پروژه
پول
تجارت ایرانی ریال و تومان را به جای هم به کار میبرد. ۱ تومان = ۱۰ ریال. API شرکتهای حمل معمولاً ریال میخواهند، ولی فروشنده به تومان فکر میکند. خطای ۱۰ برابر در هر جهت فاجعه است.
ارسال این را با value object Amount حل میکند:
use Eram\Ersal\Money\Amount;
$cost = Amount::fromToman(50_000); // فروشنده به تومان فکر میکند
$cost->inRials(); // ۵۰۰,۰۰۰ — API شرکت ریال دریافت میکند
$cost->inToman(); // ۵۰,۰۰۰ — نمایش به تومان
Amount همه چیز را داخلی به ریال ذخیره میکند. هر provider میداند API خودش چه واحدی میخواهد و به طور خودکار تبدیل میکند.
ساخت
Amount::fromRials(500_000); // ۵۰۰,۰۰۰ ریال = ۵۰,۰۰۰ تومان
Amount::fromToman(50_000); // ۵۰,۰۰۰ تومان = ۵۰۰,۰۰۰ ریال
مقدار منفی InvalidAmountException پرتاب میکند.
عملیات ریاضی (تغییرناپذیر)
$a = Amount::fromToman(10_000);
$b = Amount::fromToman(3_000);
$c = $a->add($b); // ۱۳,۰۰۰ تومان (Amount جدید)
$d = $a->subtract($b); // ۷,۰۰۰ تومان (Amount جدید)
// $a تغییر نمیکند
مقایسه
$a->equals($b);
$a->greaterThan($b);
$a->lessThan($b);
$a->isZero();⁅تجارت ایرانی ریال و توم را به جای هم به کار برد 1 توم 10 ریال api شرکت حمل معمولا ریال خواست ولی فروشنده به توم فکر کرد خطا 10 برابر در هر جهت فاجعه است ارسال این را با value object amount حل کرد use eram ersal money amount cost amount fromtoman 50 000 فروشنده به توم فکر کرد cost inrials 500 000 api شرکت ریال دریافت کرد cost intoman 50 000 نمایش به توم amount همه چیز را داخلی به ریال ذخیره کرد هر provider دانست api خود چه واحدی خواست و به طور خودکار تبدیل کرد amount fromrials 500 000 500 000 ریال 50 000 توم amount fromtoman 50 000 50 000 توم 500 000 ریال مقدار منفی invalidamountexception پرتاب کرد a amount fromtoman 10 000 b amount fromtoman 3 000 c a add b 13 000 توم amount جدید d a subtract b 7 000 توم amount جدید a تغییر نکرد a equals b a greaterthan b a lessthan b a iszero⁆
⁅پول⁆
⁅ساختعملی ریاضی تغییرناپذیر مقایسه⁆