cart_id = Cookie::get('cart'); if ($this->cart_id) { $this->data = Cache::get('cart_' . $this->cart_id); } else { $this->cart_id = uniqid(); } } public function get($key) { return new CartCollection($this->data[$key] ?? []); } public function has($key) { return isset($this->data[$key]); } public function put($key, $value) { $this->data[$key] = $value; Cache::put('cart_' . $this->cart_id, $this->data); if (!Cookie::hasQueued('cart')) { Cookie::queue( Cookie::make('cart', $this->cart_id, 60 * 24 * 30) ); } } }