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录入页面中动态从数据库中提取数据的实现
Oct 09 PHP
几种显示数据的方法的比较
Oct 09 PHP
PHP新手上路(七)
Oct 09 PHP
php购物车实现代码
Oct 10 PHP
第六章 php目录与文件操作
Dec 30 PHP
解析获取优酷视频真实下载地址的PHP源代码
Jun 26 PHP
php判断页面是否是微信打开的示例(微信打开网页)
Apr 25 PHP
标准PHP的AES加密算法类
Mar 12 PHP
CodeIgniter辅助之第三方类库third_party用法分析
Jan 20 PHP
利用php_imagick实现复古效果的方法
Oct 18 PHP
yii2实现分页,带搜索的分页功能示例
Jan 07 PHP
PHP实现网站访问量计数器
Oct 27 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基于MySQL数据库实现对象持久层的方法
2015/06/17 PHP
反射调用private方法实践(php、java)
2015/12/21 PHP
详解Yii2 rules 的验证规则
2016/12/02 PHP
PHP Laravel 上传图片、文件等类封装
2017/08/16 PHP
不要小看注释掉的JS 引起的安全问题
2008/12/27 Javascript
基于jquery的loading 加载提示效果实现代码
2011/09/01 Javascript
Javascript图像处理—平滑处理实现原理
2012/12/28 Javascript
网站404页面3秒后跳到首页的实例代码
2013/08/16 Javascript
使用控制台破解百小度一个月只准改一次名字
2015/08/13 Javascript
Javascript获取统一管理的提示语(message)
2016/02/03 Javascript
分分钟玩转Vue.js组件
2016/10/25 Javascript
import与export在node.js中的使用详解
2017/09/28 Javascript
JavaScript递归函数定义与用法实例分析
2019/01/24 Javascript
使用vant的地域控件追加全部选项
2020/11/03 Javascript
[01:04:05]VG vs Newbee 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
[48:31]完美世界DOTA2联赛PWL S3 DLG vs Phoenix 第二场 12.17
2020/12/19 DOTA
python简单分割文件的方法
2015/07/30 Python
浅谈python中的实例方法、类方法和静态方法
2017/02/17 Python
Python随机生成身份证号码及校验功能
2018/12/04 Python
jupyter notebook 中输出pyecharts图实例
2020/04/23 Python
Django url,从一个页面调到另个页面的方法
2019/08/21 Python
numpy库ndarray多维数组的维度变换方法(reshape、resize、swapaxes、flatten)
2020/04/28 Python
Python如何基于Tesseract实现识别文字功能
2020/06/05 Python
2020版Python学习路线图(附学习资料)
2020/09/15 Python
python 进程池pool使用详解
2020/10/15 Python
python爬虫实现爬取同一个网站的多页数据的实例讲解
2021/01/18 Python
阿拉伯时尚购物网站:Nisnass
2021/02/07 全球购物
Huda Beauty官方商店:化妆和美容产品
2020/09/05 全球购物
关于赌博的检讨书
2014/01/24 职场文书
水果超市创业计划书
2014/01/27 职场文书
一年级学生期末评语
2014/04/21 职场文书
法定代表人身份证明书
2014/09/10 职场文书
领导干部群众路线教育实践活动剖析材料
2014/10/10 职场文书
北京青年观后感
2015/06/15 职场文书
2016圣诞节贺卡寄语
2015/12/07 职场文书
Tomcat用户管理的优化配置详解
2022/03/31 Servers