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 数据库字段复用的基本原理与示例
Jul 22 PHP
php面向对象 字段的声明与使用
Jun 14 PHP
php中判断文件空目录是否有读写权限的函数代码
Aug 07 PHP
php数组转换js数组操作及json_encode的用法详解
Oct 26 PHP
php格式化日期和时间格式化示例分享
Feb 24 PHP
CI框架中通过hook的方式实现简单的权限控制
Jan 07 PHP
php使用pclzip类实现文件压缩的方法(附pclzip类下载地址)
Apr 30 PHP
Yii2简单实现给表单添加验证码的方法
Jul 18 PHP
PHP实现表单提交时去除斜杠的方法
Dec 26 PHP
php实现微信企业转账功能
Oct 02 PHP
PHP 结合 Boostrap 结合 js 实现学生列表删除编辑及搜索功能
May 21 PHP
Laravel如何实现自动加载类
Oct 14 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 REMOTE_ADDR之获取访客IP的代码
2008/04/22 PHP
用php实现的下载css文件中的图片的代码
2010/02/08 PHP
PHP贪婪算法解决0-1背包问题实例分析
2015/03/23 PHP
PHP 实现公历日期与农历日期的互转换
2017/09/13 PHP
php二维码生成以及下载实现
2017/09/28 PHP
Bootstrap+PHP实现多图上传功能实例详解
2018/04/08 PHP
如何解决PHP获取不到SESSION信息之一般情况
2019/10/10 PHP
基于jquery实现的上传图片及图片大小验证、图片预览效果代码
2011/04/12 Javascript
JavaScript mapreduce工作原理简析
2012/11/25 Javascript
javascript date格式化示例
2013/09/25 Javascript
js自动生成的元素与页面原有元素发生堆叠的解决方法
2013/10/24 Javascript
jquery实现下拉菜单的二级联动利用json对象从DB取值显示联动
2014/03/27 Javascript
浅谈angularJS 作用域
2015/07/05 Javascript
JS实现无限级网页折叠菜单(类似树形菜单)效果代码
2015/09/17 Javascript
JS中用try catch对代码运行的性能影响分析
2016/12/26 Javascript
Vue2.0利用 v-model 实现组件props双向绑定的优美解决方案
2017/03/13 Javascript
vue2.0 子组件改变props值,并向父组件传值的方法
2018/03/01 Javascript
Node.js爬取豆瓣数据实例分析
2018/03/05 Javascript
Jquery遍历筛选数组的几种方法和遍历解析json对象,Map()方法详解以及数组中查询某值是否存在
2019/01/18 jQuery
Vue.js实现备忘录功能
2019/06/26 Javascript
JS异步处理的进化史深入讲解
2019/08/25 Javascript
vue调用微信JSDK 扫一扫,相册等需要注意的事项
2021/01/03 Vue.js
JavaScript实现消消乐的源代码
2021/01/12 Javascript
python实现数据分析与建模
2019/07/11 Python
python3 googletrans超时报错问题及翻译工具优化方案 附源码
2020/12/23 Python
基于html5 canvas实现漫天飞雪效果实例
2014/09/10 HTML / CSS
html5实现图片转圈的动画效果——让页面动起来
2017/10/16 HTML / CSS
儿媳婚宴答谢词
2014/01/14 职场文书
大学军训感言1000字
2014/02/25 职场文书
《祁黄羊》教学反思
2014/04/22 职场文书
股东授权委托书范本
2014/09/13 职场文书
创先争优宣传标语
2014/10/08 职场文书
2015年业务员工作总结范文
2015/04/07 职场文书
爱护环境建议书
2015/09/14 职场文书
MySQL连接控制插件介绍
2021/09/25 MySQL
Tomcat执行startup.bat出现闪退的原因及解决办法
2022/04/20 Servers