فهرست مستندات پروژه

آدرس‌ها و بسته‌ها

Ersalv0.2.0-beta.2مشاهده منبعفارسی / انگلیسی

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 پرتاب می‌کند.

جستجو در مستندات

در همه پروژه‌ها جستجو کنید. با بستن این پنجره به راهنما برمی‌گردید.

Tab برای جابه‌جایی · Enter برای باز کردنEsc برای بستن