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 相关文章推荐
3种平台下安装php4经验点滴
Oct 09 PHP
Smarty结合Ajax实现无刷新留言本实例
Jan 02 PHP
PHP防注入安全代码
Apr 09 PHP
php验证手机号码(支持归属地查询及编码为UTF8)
Feb 01 PHP
探讨php define()函数及defined()函数使用详解
Jun 09 PHP
在Ubuntu 14.04上部署 PHP 环境及 WordPress
Sep 02 PHP
使用JavaScript创建新样式表和新样式规则
Jun 14 PHP
PHP实现无限分类的实现方法
Nov 14 PHP
thinkPHP框架中执行原生SQL语句的方法
Oct 25 PHP
Laravel使用消息队列需要注意的一些问题
Dec 13 PHP
PHP实现对图片的反色处理功能【测试可用】
Feb 01 PHP
PHP生成随机码的思路与方法实例探索
Apr 11 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
解析使用substr截取UTF-8中文字符串出现乱码的问题
2013/06/20 PHP
PHP中if和or运行效率对比
2014/12/12 PHP
经典PHP加密解密函数Authcode()修复版代码
2015/04/05 PHP
php将远程图片保存到本地服务器的实现代码
2015/08/03 PHP
JavaScript判断窗口是否最小化的代码(跨浏览器)
2010/08/01 Javascript
jQuery根据纬度经度查看地图处理程序
2013/05/08 Javascript
深入理解Javascript里的依赖注入
2014/03/19 Javascript
javascript实现省市区三级联动下拉框菜单
2015/11/17 Javascript
Angular.js指令学习中一些重要属性的用法教程
2017/05/24 Javascript
JavaScrpt中如何使用 cookie 设置查看与删除功能
2017/07/09 Javascript
vue 项目中使用Loading组件的示例代码
2018/08/31 Javascript
详解几十行代码实现一个vue的状态管理
2019/01/28 Javascript
解决layer弹出层中表单不起作用的问题
2019/09/09 Javascript
js实现自动播放匀速轮播图
2020/02/06 Javascript
vue大型项目之分模块运行/打包的实现
2020/09/21 Javascript
微信小程序实现日历签到
2020/09/21 Javascript
[01:45]2014DOTA2 TI预选赛预选赛 战前探营!
2014/05/21 DOTA
[40:06]DOTA2亚洲邀请赛 4.3 突围赛 Liquid vs VGJ.T 第一场
2018/04/04 DOTA
python中使用pyhook实现键盘监控的例子
2014/07/18 Python
python虚拟环境virualenv的安装与使用
2016/12/18 Python
Python内置模块turtle绘图详解
2017/12/09 Python
Python实现的个人所得税计算器示例
2018/06/01 Python
解决Python找不到ssl模块问题 No module named _ssl的方法
2019/04/29 Python
对tensorflow中tf.nn.conv1d和layers.conv1d的区别详解
2020/02/11 Python
python批量替换文件名中的共同字符实例
2020/03/05 Python
详解Python IO编程
2020/07/24 Python
Woods官网:加拿大最古老、最受尊敬的户外品牌之一
2020/09/12 全球购物
寻找迷宫的一条出路,o通路;X:障碍
2016/07/10 面试题
工程项目经理任命书
2014/06/05 职场文书
一份没有按时交货失信于客户的检讨书
2014/09/19 职场文书
上班迟到检讨书300字
2014/10/18 职场文书
企业办公室主任岗位职责
2015/04/01 职场文书
商场营业员岗位职责
2015/04/14 职场文书
企业团队精神心得体会
2016/01/19 职场文书
Redis遍历所有key的两个命令(KEYS 和 SCAN)
2021/04/12 Redis
教你怎么用Python处理excel实现自动化办公
2021/04/30 Python