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 相关文章推荐
如何删除多级目录
Oct 09 PHP
PHP中isset()和unset()函数的用法小结
Mar 11 PHP
递归实现php数组转xml的代码分享
May 14 PHP
PHP实现简单实用的验证码类
Jul 29 PHP
Yii操作数据库实现动态获取表名的方法
Mar 29 PHP
PHP使用自定义方法实现数组合并示例
Jul 07 PHP
php求数组全排列,元素所有组合的方法总结
Mar 14 PHP
php数据库的增删改查 php与javascript之间的交互
Aug 31 PHP
PHP中的empty、isset、isnull的区别与使用实例
Mar 22 PHP
Yii框架通过请求组件处理get,post请求的方法分析
Sep 03 PHP
Laravel timestamps 设置为unix时间戳的方法
Oct 11 PHP
mac pecl 安装php7.1扩展教程
Oct 17 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 stream_get_meta_data返回值
2013/09/29 PHP
php 7新特性之类型申明详解
2017/06/06 PHP
PHP基于堆栈实现的高级计算器功能示例
2017/09/15 PHP
use jscript List Installed Software
2007/06/11 Javascript
实现连缀调用的map方法(prototype)
2009/08/05 Javascript
Javascript验证上传图片大小[前台处理]
2014/07/18 Javascript
javascript常用函数归纳整理
2014/10/31 Javascript
js实现点击左右按钮轮播图片效果实例
2015/01/29 Javascript
jquery实现红色竖向多级向右展开的导航菜单效果
2015/08/31 Javascript
跟我学习javascript的call(),apply(),bind()与回调
2015/11/16 Javascript
jQuery移动页面开发中的触摸事件与虚拟鼠标事件简介
2015/12/03 Javascript
JavaScript易错知识点整理
2016/12/05 Javascript
Bootstrap table使用方法记录
2017/08/23 Javascript
jQuery 实现左右两侧菜单添加、移除功能
2018/01/02 jQuery
浅析vue-router原理
2018/10/19 Javascript
细说Vue组件的服务器端渲染的过程
2019/05/30 Javascript
通过扫小程序码实现网站登陆功能
2019/08/22 Javascript
基于jquery实现彩色投票进度条代码解析
2020/08/26 jQuery
python实现爬虫下载美女图片
2015/07/14 Python
Python切片操作去除字符串首尾的空格
2019/04/22 Python
pip install python 快速安装模块的教程图解
2019/10/08 Python
Python全面分析系统的时域特性和频率域特性
2020/02/26 Python
python读取yaml文件后修改写入本地实例
2020/04/27 Python
input file上传文件样式支持html5的浏览器解决方案
2012/11/14 HTML / CSS
塔吉特百货公司官网:Target
2017/04/27 全球购物
欧舒丹美国官网:L’Occitane美国
2018/02/23 全球购物
若通过ObjectOutputStream向一个文件中多次以追加方式写入object,为什么用ObjectInputStream读取这些object时会产生StreamCorruptedException?
2016/10/17 面试题
经济学博士求职自荐信范文
2013/11/23 职场文书
正风肃纪剖析材料
2014/02/18 职场文书
中学教师师德承诺书
2014/05/23 职场文书
小学数学课题方案
2014/06/15 职场文书
2014年幼儿园国庆主题活动方案
2014/09/16 职场文书
教育读书笔记
2015/07/02 职场文书
2016年圣诞节寄语(一句话)
2015/12/07 职场文书
go语言map与string的相互转换的实现
2021/04/07 Golang
Python中的tkinter库简单案例详解
2022/01/22 Python