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
PHP静态新闻列表自动生成代码
Jun 14 PHP
The specified CGI application misbehaved by not returning a complete set of HTTP headers
Mar 31 PHP
php Smarty初体验二 获取配置信息
Aug 08 PHP
php用正则表达式匹配中文实例详解
Nov 06 PHP
PHP基本语法总结
Sep 06 PHP
PHP生成不重复标识符的方法
Nov 21 PHP
PHP获取数组最大值下标的方法
May 12 PHP
在WordPress中安装使用视频播放器插件Hana Flv Player
Jan 04 PHP
Thinkphp3.2.3分页使用实例解析
Jul 28 PHP
在 Laravel 6 中缓存数据库查询结果的方法
Dec 11 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
Apr 02 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取得一个类的属性和方法的实现代码
2011/05/22 PHP
PHP自定义函数实现数组比较功能示例
2017/10/19 PHP
PHP框架实现WebSocket在线聊天通讯系统
2019/11/21 PHP
JavaScript 事件记录使用说明
2009/10/20 Javascript
自写的一个jQuery圆角插件
2010/10/26 Javascript
用js来定义浏览器中一个左右浮动元素相对于页面主体宽度的位置的函数
2012/01/21 Javascript
Javascript检查图片大小不要让大图片撑破页面
2014/11/04 Javascript
JavaScript数组随机排列实现随机洗牌功能
2015/03/19 Javascript
jQuery实现网页抖动的菜单抖动效果
2015/08/07 Javascript
jQuery幻灯片特效代码分享--鼠标滑过按钮时切换(2)
2020/11/18 Javascript
js省市联动效果完整实例代码
2015/12/09 Javascript
JavaScript中字符串与Unicode编码互相转换的实现方法
2015/12/18 Javascript
浅谈javascript基础之客户端事件驱动
2016/06/10 Javascript
Bootstrap编写一个在当前网页弹出可关闭的对话框 非弹窗
2016/06/30 Javascript
js获取浏览器和屏幕的各种宽度高度
2017/02/22 Javascript
详解AngularJS ui-sref的简单使用
2017/04/24 Javascript
opencv 识别微信登录验证滑动块位置
2018/08/07 Javascript
详解mpvue中小程序自定义导航组件开发指南
2019/02/11 Javascript
JS实现移动端点击按钮复制文本内容
2019/07/28 Javascript
使用webpack/gulp构建TypeScript项目的方法示例
2019/12/18 Javascript
Vue的data、computed、watch源码浅谈
2020/04/04 Javascript
Vue项目开发常见问题和解决方案总结
2020/09/11 Javascript
[02:32]DOTA2英雄基础教程 美杜莎
2014/01/07 DOTA
python的描述符(descriptor)、装饰器(property)造成的一个无限递归问题分享
2014/07/09 Python
如何在Python中编写并发程序
2016/02/27 Python
Python利用turtle库绘制彩虹代码示例
2017/12/20 Python
详解js文件通过python访问数据库方法
2019/03/03 Python
下载与当前Chrome对应的chromedriver.exe(用于python+selenium)
2020/01/14 Python
致标枪运动员广播稿
2014/02/06 职场文书
2014年小学生教师节演讲稿范文
2014/09/10 职场文书
个人党性分析材料
2014/12/19 职场文书
婚宴邀请函
2015/01/30 职场文书
工作简历自我评价
2015/03/11 职场文书
生产现场禁烟通知
2015/04/23 职场文书
mongodb清除连接和日志的正确方法分享
2021/09/15 MongoDB
vue实现input输入模糊查询的三种方式
2022/08/14 Vue.js