PHP+redis实现的购物车单例类示例


Posted in PHP onFebruary 02, 2019

本文实例讲述了PHP+redis实现的购物车单例类。分享给大家供大家参考,具体如下:

<?php
/**
 * 购物车单例类
 *
 * @author YING
 * @param void
 * @return void
 */
class CartSingleton
{
  //定义一个静态的私有变量
  static private $_instance=null;
  private $redis=null;
  //私有化的构造方法
  private final function __construct()
  {
    //实例化
    $this->redis=new Redis();
    $this->redis->connect('127.0.0.1',6379);
  }
  //私有化的克隆方法
  private function __clone()
  {
  }
  //公有的静态方法
  static public function getInstance()
  {
    if(!(self::$_instance instanceof self)){
      self::$_instance = new CartSingleton();
    }
    return self::$_instance;
  }
  /**
   * 加入购物车
   *
   * @author YING
   * @param userId goodsName goodsId 用户id 商品名称 商品id
   * @return int
   */
   public function addCart($userId,$goodsName,$goodsId)
   {
     $hashKey="user_".$userId; //hash键名
     $key=$goodsId."_".$goodsName;//键名
     //加入
     return $this->redis->hIncrBy($hashKey,$key,1);
   }
  /**
   * 单删
   *
   * @author YING
   * @param userId goodsId
   * @return
   */
  public function cartDelOne($userId,$goodsId)
  {
    $hashKey="user_".$userId; //hash键名
    $key=$goodsId;//键名
    //删除
    return $this->redis->hDel($hashKey,$key);
  }
  /**
   * 清空购物车
   *
   * @author YING
   * @param userId
   * @return void
   */
  public function cartDelAll($userId)
  {
    $hashKey="user_".$userId; //hash键名
    //删除
    return $this->redis->del($hashKey);
  }
  /**
   * 购物车列表
   *
   * @author YING
   * @param userId
   * @return void
   */
  public function cartList($userId)
  {
    $hashKey="user_".$userId; //hash键名
    //查询数据
    return $this->redis->hGetAll($hashKey);
  }
}
//实例化类
$obj=CartSingleton::getInstance();

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP新手入门学习方法
May 08 PHP
PHP中strtotime函数使用方法分享
Jan 10 PHP
114啦源码(114la)不能生成地方房产和地方报刊问题4级页面0字节的解决方法
Jan 12 PHP
Yii中render和renderPartial的区别
Sep 03 PHP
php文件操作之小型留言本实例
Jun 20 PHP
php获取网站百度快照日期的方法
Jul 29 PHP
PHP+Ajax验证码验证用户登录
Jul 20 PHP
PHP从数组中删除元素的四种方法实例
May 12 PHP
Laravel 5.4因特殊字段太长导致migrations报错的解决
Oct 22 PHP
thinkphp5+layui实现的分页样式示例
Oct 08 PHP
PHP封装请求类实例分析【基于Yii框架】
Oct 17 PHP
PHP Beanstalkd消息队列的安装与使用方法实例详解
Feb 21 PHP
PhpStorm配置Xdebug调试的方法步骤
Feb 02 #PHP
PHP中的访问修饰符简单比较
Feb 02 #PHP
PHP PDOStatement::setAttribute讲解
Feb 01 #PHP
PHP PDOStatement::rowCount讲解
Feb 01 #PHP
PHP PDOStatement::nextRowset讲解
Feb 01 #PHP
PHP PDOStatement::getColumnMeta讲解
Feb 01 #PHP
PHP PDOStatement::getAttribute讲解
Feb 01 #PHP
You might like
PHP 七大优势分析
2009/06/23 PHP
PHP操作数组的一些函数整理介绍
2011/07/17 PHP
php适配器模式介绍
2012/08/14 PHP
教你识别简单的免查杀PHP后门
2015/09/13 PHP
php搜索文件程序分享
2015/10/30 PHP
extjs fckeditor集成代码
2009/05/10 Javascript
火狐下table中创建form导致两个table之间出现空白
2013/09/02 Javascript
js格式化货币数据实现代码
2013/09/04 Javascript
PageSwitch插件实现100种不同图片切换效果
2015/07/28 Javascript
js实现索引图片切换效果
2015/11/21 Javascript
利用vue实现模态框组件
2016/12/19 Javascript
微信小程序 传值取值的几种方法总结
2017/01/16 Javascript
JS基于onclick事件实现单个按钮的编辑与保存功能示例
2017/02/13 Javascript
Angular.JS中的指令引用template与指令当做属性详解
2017/03/30 Javascript
Angular.js中$resource高大上的数据交互详解
2017/07/30 Javascript
vue中,在本地缓存中读写数据的方法
2018/09/21 Javascript
Vue.js数字输入框组件使用方法详解
2019/10/19 Javascript
vuex中遇到的坑,vuex数据改变,组件中页面不渲染操作
2020/11/16 Javascript
[03:43]2014DOTA2西雅图国际邀请赛 newbee战队巡礼
2014/07/07 DOTA
[37:29]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第二场 11.19
2020/11/19 DOTA
python开发环境PyScripter中文乱码问题解决方案
2016/09/11 Python
Python中的__slots__示例详解
2017/07/06 Python
Python数据拟合与广义线性回归算法学习
2017/12/22 Python
Python网络编程基于多线程实现多用户全双工聊天功能示例
2018/04/10 Python
Django之无名分组和有名分组的实现
2019/04/16 Python
python django 原生sql 获取数据的例子
2019/08/14 Python
python控制台实现tab补全和清屏的例子
2019/08/20 Python
使用pandas的box_plot去除异常值
2019/12/10 Python
python中使用input()函数获取用户输入值方式
2020/05/03 Python
Python如何利用Har文件进行遍历指定字典替换提交的数据详解
2020/11/05 Python
解释下列WebService名词:WSDL、SOAP、UDDI
2012/06/22 面试题
商场经理竞聘演讲稿
2014/01/01 职场文书
会计职业生涯规划范文
2014/01/04 职场文书
我的小天地教学反思
2014/04/30 职场文书
学校证明范文
2015/06/24 职场文书
PyTorch的Debug指南
2021/05/07 Python