購物車|商城類項目在程序開發中必不可少一個環節,這裡就來介紹下通常情況的設計及編碼實現
購物車的設計
購物車中存儲的內容:
所購商品ID 和 購買數量.
購物車的持久化存儲, 如何實現?
(購物車的數據存儲在何處?)
典型的購物車需要實現的效果(功能).
a, 相同的瀏覽器, 在未登錄的情況的下, 可以將購物車商品保存很長時間. 購物車與瀏覽器綁定. cookie技術
b, 在登錄情況下. 任何瀏覽器, 任何時候, 都可以找到購物車中的商品. 購物車與會員綁定. 數據庫持久化存儲
方案:
會員登陸時, 存儲在數據表中. 會員未登錄時,存儲在cookie中.
由未登錄, 轉到登錄狀態時, 將cookie中的購物車商品, 同步到當前購物車中.
反過來(退出登錄), 不需要同步.
購物車(對象,類)的實現:
購物車的基本功能:增加商品、刪除某個商品、更新某個商品的數量、清空購物車
數據的持久化:在購物車對象, 被銷燬釋放時, 將所購商品存儲起來
數據的初始化
為了便於管理,這裡將全部的購物車操作, 封裝一個對象來完成
這裡實例為PHP語言中TP框架內的實現
// 存放全部商品
private $goods_list = [];
設計該屬性, 存儲全部購物車的商品, 主要的屬性. 關聯數組結構
其鍵: 使用商品id表示. 其值, 使用購買數量表示.
[3] = 10;, id為3的商品, 購買了10件
添加商品:
已經購買過, 修改購買數量即可
沒有買過, 添加商品即可
更新購物車
刪除、清空操作
數據持久化編碼實現
在析構方法中, 完成對數據持久化的處理. 析構是自動被調用, 可以保證一定會執行.
選擇將數據序列化後, 存儲到cookie或數據表中
數據初始化
初始化數據的方法
判斷是否登錄, 選擇從 數據庫 還是 cookie中拿數據:
反序列化後, 設置$cart->goods_list.
保證一個會員只有一個購物車
可以用單例模式實現
關於購物車類的基本功能和實現就寫到這了,主要理解設計思路,還有其他關於購物車的功能根據業務邏輯繼續添加即可。