php实现的mongoDB单例模式操作类


Posted in PHP onJanuary 20, 2018

本文实例讲述了php实现的mongoDB单例模式操作类。分享给大家供大家参考,具体如下:

看了好多mongo类都不尽人意。最后发现根本不需要自己封装类。php mongo 的扩展自带的方法就已经很方便了

但是习惯性的把数据库连接部分封装起来。最后我就封装了一个单例模式的数据库类

使用单例模式是为了避免生成多个实例,浪费资源

下面是封装的代码

class Mongo_db
{
  private static $cli;
  /**
   * 不允许初始化
   */
  private function __construct()
  {
    $config = Config::get('config.mongo_config');
    if(empty($config)){
      $this->throwError('无法连接数据库!');
    }
    if (!empty($config["user_name"])) {
      $this->mongo = new MongoClient("mongodb://{$config['user_name']}:{$config['password']}@{$config['host']}:{$config['port']}");
    }else {
      $this->mongo = new MongoClient($config['host'] . ':' . $config['port']);
    }
  }
  /**
  * 单例模式
  * @return Mongo|null
  */
 public static function cli(){
  if(!(self::$cli instanceof self)){
   self::$cli = new self();
  }
  return self::$cli->mongo;
 }
}
$mongo = Mongo_db::cli()->test->mycollection; // test 是选择的数据库 , mycollection 是选择的表。 因为使用单例模式,所以,只会实例一个资源具体操作再参考下面的文章吧

这里有个一篇文章,讲的php对mongo的操作,很详细,也很易懂。希望大家参考下
https://3water.com/article/37727.htm

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

PHP 相关文章推荐
PHP与javascript的两种交互方式
Oct 09 PHP
php 模拟 asp.net webFrom 按钮提交事件的思路及代码
Dec 02 PHP
php实例分享之mysql数据备份
May 19 PHP
php实现插入数组但不影响原有顺序的方法
Mar 27 PHP
PHP HTTP 认证实例详解
Nov 03 PHP
Symfony2创建基于域名的路由相关示例
Nov 14 PHP
详解php中的implements 使用
Jun 13 PHP
Thinkphp开发--集成极光推送
Sep 15 PHP
PHP PDOStatement::closeCursor讲解
Jan 30 PHP
PHP PDOStatement::rowCount讲解
Feb 01 PHP
thinkphp5修改view到根目录实例方法
Jul 02 PHP
PHP之header函数详解
Mar 02 PHP
PHP实现合并两个排序链表的方法
Jan 19 #PHP
php利用ob_start()清除输出和选择性输出的方法
Jan 18 #PHP
php通过header发送自定义数据方法
Jan 18 #PHP
PHP实现从上往下打印二叉树的方法
Jan 18 #PHP
PHP获取链表中倒数第K个节点的方法
Jan 18 #PHP
PHP获取二叉树镜像的方法
Jan 17 #PHP
PHP实现按之字形顺序打印二叉树的方法
Jan 16 #PHP
You might like
php中有关合并某一字段键值相同的数组合并的改进
2015/03/10 PHP
Symfony2 session用法实例分析
2016/02/04 PHP
javascript 时间比较实现代码
2009/10/28 Javascript
基于JQuery的cookie插件
2010/04/07 Javascript
用jquery实现下拉菜单效果的代码
2010/07/25 Javascript
js解析与序列化json数据(三)json的解析探讨
2013/02/01 Javascript
结合JQ1.9通过js正则判断各种浏览器版本的方法
2013/12/30 Javascript
JScript中的条件注释详解
2015/04/24 Javascript
javascript每日必学之封装
2016/02/23 Javascript
js添加千分位的实现代码(超简单)
2016/08/01 Javascript
jquery.Callbacks的实现详解
2016/11/30 Javascript
Node接收电子邮件的实例代码
2017/07/21 Javascript
从parcel.js打包出错到选择nvm的全部过程
2018/01/23 Javascript
Javascript读取上传文件内容/类型/字节数
2019/04/30 Javascript
vue实现页面滚动到底部刷新
2019/08/16 Javascript
python3.6实现学生信息管理系统
2019/02/21 Python
Python 获取windows桌面路径的5种方法小结
2019/07/15 Python
python实现PID算法及测试的例子
2019/08/08 Python
python编写计算器功能
2019/10/25 Python
python PIL/cv2/base64相互转换实例
2020/01/09 Python
Python操作MongoDb数据库流程详解
2020/03/05 Python
Python制作一个仿QQ办公版的图形登录界面
2020/09/22 Python
matplotlib交互式数据光标mpldatacursor的实现
2021/02/03 Python
使用CSS3的::selection改变选中文本颜色的方法
2015/09/29 HTML / CSS
体育纪念品、亲笔签名的体育收藏品:Steiner Sports
2020/07/31 全球购物
德国亚马逊官方网站:Amazon.de
2020/11/15 全球购物
环境科学专业大学生自荐信格式
2013/09/21 职场文书
高中历史教学反思
2014/02/08 职场文书
幼儿园安全责任书范本
2014/07/24 职场文书
2014党委书记四风问题对照检查材料思想汇报
2014/09/22 职场文书
同学会邀请函模板
2015/01/30 职场文书
2015中学教师个人工作总结
2015/07/22 职场文书
《风娃娃》教学反思
2016/02/18 职场文书
2019新员工试用期转正工作总结范文
2019/08/21 职场文书
vue响应式原理与双向数据的深入解析
2021/06/04 Vue.js
关于nginx 实现jira反向代理的问题
2021/09/25 Servers