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 短链接算法收集与分析
Dec 30 PHP
ThinkPHP的截取字符串函数无法显示省略号的解决方法
Jun 25 PHP
php中数字、字符与对象判断函数用法实例
Nov 26 PHP
ThinkPHP模版引擎之变量输出详解
Dec 05 PHP
通过php修改xml文档内容的方法
Jan 23 PHP
PHP简单选择排序算法实例
Jan 26 PHP
PHP也能干大事 随机函数
Apr 14 PHP
WordPress中缩略图的使用以及相关技巧
Nov 24 PHP
PHP中PDO连接数据库中各种DNS设置方法小结
May 13 PHP
WordPress中的shortcode短代码功能使用详解
May 17 PHP
简述php环境搭建与配置
Dec 05 PHP
yii框架redis结合php实现秒杀效果(实例代码)
Oct 26 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
PHP5中MVC结构学习
2006/10/09 PHP
PHP反转字符串函数strrev()函数的用法
2012/02/04 PHP
php 操作数组(合并,拆分,追加,查找,删除等)
2012/07/20 PHP
PHP中空字符串介绍0、null、empty和false之间的关系
2012/09/25 PHP
thinkphp文件引用与分支结构用法实例
2014/11/26 PHP
PHP实现图片自动清理的方法
2015/07/08 PHP
php中实现用数组妩媚地生成要执行的sql语句
2015/07/10 PHP
PHP CURL采集百度搜寻结果图片不显示问题的解决方法
2017/02/03 PHP
Laravel学习教程之路由模块
2017/08/18 PHP
php学习笔记之mb_strstr的基本使用
2018/02/03 PHP
一端时间轮换的广告
2006/06/26 Javascript
jquery ajax 登录验证实现代码
2009/09/23 Javascript
让ie6也支持websocket采用flash封装实现
2013/02/18 Javascript
jquery实现下拉菜单的二级联动利用json对象从DB取值显示联动
2014/03/27 Javascript
javascript HTML5文件上传FileReader API
2020/03/27 Javascript
Javascript发送AJAX请求实例代码
2016/08/21 Javascript
nodejs个人博客开发第七步 后台登陆
2017/04/12 NodeJs
jQuery导航条固定定位效果实例代码
2017/05/26 jQuery
JS实现简易的图片拖拽排序实例代码
2017/06/09 Javascript
JS 判断某变量是否为某数组中的一个值的3种方法(总结)
2017/07/10 Javascript
详解react、redux、react-redux之间的关系
2018/04/11 Javascript
Vue项目vscode 安装eslint插件的方法(代码自动修复)
2020/04/15 Javascript
使用python实现链表操作
2018/01/26 Python
python 多维切片之冒号和三个点的用法介绍
2018/04/19 Python
Python vtk读取并显示dicom文件示例
2020/01/13 Python
django ListView的使用 ListView中获取url中的参数值方式
2020/03/27 Python
用python打开摄像头并把图像传回qq邮箱(Pyinstaller打包)
2020/05/17 Python
通过实例了解python__slots__使用方法
2020/09/14 Python
伦敦最有品味的百货:Liberty London
2016/11/12 全球购物
美国克罗格超市在线购物:Kroger
2019/06/21 全球购物
金士达面试非笔试
2012/03/14 面试题
预备党员政审材料
2014/02/04 职场文书
工作作风懒散检讨书
2014/10/29 职场文书
公司出纳岗位职责
2015/03/31 职场文书
党员干部廉政承诺书
2015/04/28 职场文书
用Python爬取英雄联盟的皮肤详细示例
2021/12/06 Python