- چهارشنبه 22 مهر 1405 ساعت 19:00
- 3.1.9
- کامل شده
- منقضی شده
Shopping Cart Library سبد خرید سادهای در Session نگه میدارد. این کتابخانه برای نمونههای کوچک یا پروژههایی که به امکانات پایه سبد خرید نیاز دارند مناسب است، اما منطق قیمتگذاری، موجودی، تخفیف و پرداخت را باید در لایه دامنه برنامه پیادهسازی کنید.
ساختار و API اصلی
هر ردیف سبد معمولاً با فیلدهای id، qty، price، name و در صورت نیاز options تعریف میشود. متد insert() کالا را اضافه میکند، update() تعداد یا گزینهها را تغییر میدهد، remove() حذف میکند، contents() اقلام را میخواند، total() جمع کل را برمیگرداند و destroy() سبد را خالی میکند.
نمونه استفاده
$this->load->library('cart');
$this->cart->insert(array(
'id' => 42,
'qty' => 2,
'price' => 125000,
'name' => 'Keyboard'
));
foreach ($this->cart->contents() as $item) {
echo $item['name'] . ' : ' . $item['qty'];
}نکته مهم
قیمت و موجودی را از مرورگر دریافت نکنید. شناسه کالا و تعداد را دریافت و قیمت نهایی را از دیتابیس محاسبه کنید. برای فروشگاه پرترافیک، سبد خرید سفارشی و ذخیرهشده در دیتابیس ممکن است انتخاب مناسبتری باشد.
مطالعه مرتبط
برای ادامه مطالعه، MVC، کوئری، ترنزکشن را ببینید.
متدهای سبد خرید
| متد یا مفهوم | کاربرد |
|---|---|
insert($items) | افزودن یک یا چند کالا به سبد. |
update($items) | بهروزرسانی تعداد یا گزینههای ردیف. |
remove($rowid) | حذف ردیف مشخص. |
contents() | دریافت ردیفهای سبد خرید. |
total() | محاسبه جمع قیمت ردیفها. |
total_items() | جمع تعداد کالاها. |
destroy() | خالی کردن سبد خرید. |
نحوه استفاده و عیبیابی
در یک Controller ابتدا Library را با Loader بارگذاری کنید، سپس تنظیمات محیطی را به آن بدهید و عملیات را اجرا کنید. نتیجه را از مسیر مشخص دریافت کنید و در صورت شکست، پیام خطا را در Log ثبت کنید. اگر Library به Driver خارجی وابسته است، وجود افزونه PHP یا برنامه موردنیاز را روی سرور بررسی کنید.
در محیط توسعه، مسیر موفق و مسیر خطا را جداگانه آزمایش کنید. ورودی خالی، مقدار نامعتبر، فایل بزرگ، Timeout سرویس خارجی و نبود مجوز نوشتن از سناریوهایی هستند که باید بررسی شوند. منابعی مانند اتصال شبکه و فایلهای موقت را پس از پایان عملیات آزاد کنید.
در بازبینی کد، ترتیب و نتیجه متدهای insert($items)، update($items)، remove($rowid)، contents() را بررسی کنید. نام متد بهتنهایی تضمین نمیکند ورودی معتبر یا خروجی امن باشد، بنابراین رفتار هر متد را با تست و مستندات همان نسخه کنترل کنید.