فهرست مستندات پروژه
آدرسها و بستهها
Address
Address یک value object تغییرناپذیر است که فرستنده یا گیرنده را نگه میدارد.
$address = new Address(
firstName: 'علی',
lastName: 'رضایی',
phone: '09123456789', // در هنگام ساخت نرمال میشود
province: 'تهران',
city: 'تهران',
addressLine: 'خیابان ولیعصر، پلاک ۱۰۰',
postalCode: '1234567890', // ۱۰ رقمی
plate: '100', // اختیاری — پلاک
unit: '3', // اختیاری — واحد
lat: 35.6892, lng: 51.3890, // اختیاری — مختصات
email: '[email protected]',
nationalId: '1234567890', // اختیاری — کد ملی (برخی شرکتها برای COD میخواهند)
);
$address->phone; // '+989123456789' — نرمالشده
$address->fullName(); // 'علی رضایی'
$address->hasGeoCoordinates(); // true
نرمالسازی تلفن
سازنده چند فرمت موبایل ایرانی را قبول میکند و به E.164 (+989xxxxxxxxx) نرمال میکند:
| ورودی | ذخیرهشده به عنوان |
|---|---|
09123456789 | +989123456789 |
989123456789 | +989123456789 |
+989123456789 | +989123456789 |
00989123456789 | +989123456789 |
0912 345 6789 | +989123456789 |
0912-345-6789 | +989123456789 |
هر مقدار دیگر InvalidAddressException پرتاب میکند.
کد پستی
کد پستی ایرانی دقیقاً ۱۰ رقم است. هر مقدار دیگری InvalidAddressException پرتاب میکند.
کد ملی
اختیاری. اگر وارد شود باید ۱۰ رقم باشد. برخی شرکتها برای مرسولات COD میخواهند.
Parcel
Parcel از گرم و میلیمتر صحیح برای جلوگیری از انحراف ممیز شناور استفاده میکند.
$parcel = new Parcel(
weightGrams: 1500, // ۱٫۵ کیلوگرم
lengthMm: 300, // ۳۰ سانتیمتر
widthMm: 200, // ۲۰ سانتیمتر
heightMm: 100, // ۱۰ سانتیمتر
declaredValue: Amount::fromToman(250_000), // اختیاری — ارزش بیمهای
contentsDescription: 'کتاب',
fragile: false,
);
هر provider به واحد مورد نیاز خودش تبدیل میکند (اکثر از کیلوگرم و سانتیمتر، بعضی SOAPها مستقیم گرم و میلیمتر).
وزن حجمی
شرکتها بیشتر از وزن واقعی و وزن حجمی صورتحساب میدهند. فرمول استاندارد:
وزن حجمی به کیلوگرم = (طول سانتیمتر × عرض سانتیمتر × ارتفاع سانتیمتر) / ۵۰۰۰
ارسال برای شما محاسبه میکند:
$parcel->volumetricWeightGrams(); // int|null (null اگر ابعاد ندارد)
$parcel->chargeableWeightGrams(); // max(واقعی، حجمی)
اعتبارسنجی
weightGramsباید > ۰ باشد- هر بعد، اگر وارد شود، باید > ۰ باشد
نقض این قوانین InvalidParcelException پرتاب میکند.
⁅address یک value object تغییرناپذیر است که فرست یا گیرنده را نگه داشت address new address firstname علی lastname رضایی phone 09123456789 در هنگا ساخت نرمال شد province تهران city تهران addressline خیابان ولیعصر پلاک 100 postalcode 1234567890 10 رقمی plate 100 اختیاری پلاک unit 3 اختیاری واحد lat 35 6892 lng 51 3890 اختیاری مختصات email ali example com nationalid 1234567890 اختیاری کد ملی رخید شرکت برای cod خواست address phone 989123456789 نرمالشد نرمال شد address fullname علی رضایی address hasgeocoordinates true سازنده چند فرمت موبایل ایرانی را قبول کرد و به e 164 989xxxxxxxxx نرمال کرد ورودی ذخیرهشد ذخیره شد به عنوان 09123456789 989123456789 989123456789 989123456789 989123456789 989123456789 00989123456789 989123456789 0912 345 6789 989123456789 0912 345 6789 989123456789 هر مقدار دیگر invalidaddressexception پرتاب کرد کد پستی ایرانی دقیقا 10 رقم است هر مقدار دیگری invalidaddressexception پرتاب کرد اختیاری اگر وارید شد بایست 10 رقم بود رخید شرکت برای مرسول cod خواست parcel از گرم و میل میلی متر صحیح برای جلوگیری از انحراف ممیز شناور استفاد کرد parcel new parcel weightgrams 1500 1 5 کیلوگر lengthmm 300 30 سانت سانتی متر widthmm 200 20 سانت سانتی متر heightmm 100 10 سانت سانتی متر declaredvalue amount fromtoman 250 000 اختیاری ارزش بیمه بیم contentsdescription کتاب fragile false هر provider به واحد مورد نیاز خود تبدیل کرد اکثر از کیلوگر و سانت سانتی متر بعضی soap مستقی گرم و میل میلی متر شرکت بیشتر از وزن واقعی و وزن حجمی صورتحساب داد فرمول استاندارد وزن حجمی به کیلوگر طول سانت سانتی متر عرض سانت سانتی متر ارتفاع سانت سانتی متر 5000 ارسال برای شما محاسبه کرد parcel volumetricweightgrams int null null اگر بعد نداشت parcel chargeableweightgrams max واقعی حجمی weightgrams بایست 0 بود هر بعد اگر وارید شد بایست 0 بود نقض این قانون invalidparcelexception پرتاب کرد⁆
⁅آدرس ادرس و بست⁆
⁅addressparcel⁆
⁅نرمالسازی نرمال سازی تلفنکد پستیکد ملیوزن حجمیاعتبارسنجی⁆