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下使用以下代码连接并测试
Apr 09 PHP
PHP第一季视频教程(李炎恢+php100 不断更新)
May 29 PHP
PHP批量生成静态HTML的简单原理和方法
Apr 20 PHP
ThinkPHP CURD方法之data方法详解
Jun 18 PHP
php通过文件流方式复制文件的方法
Mar 13 PHP
php二维码生成
Oct 19 PHP
全面解析PHP验证码的实现原理 附php验证码小案例
Aug 17 PHP
php观察者模式应用场景实例详解
Feb 03 PHP
PHP实现字符串的全排列详解
Apr 24 PHP
PHP使用CURL实现下载文件功能示例
Jun 03 PHP
yii2.0框架多模型操作示例【添加/修改/删除】
Apr 13 PHP
PHP isset empty函数相关面试题及解析
Dec 11 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中的HashTable结构详解
2013/06/13 PHP
php读取富文本的时p标签会出现红线是怎么回事
2014/05/13 PHP
深入浅出php socket编程
2015/05/13 PHP
PHP自定义函数实现assign()数组分配到模板及extract()变量分配到模板功能示例
2018/05/23 PHP
PHP简单验证码功能机制实例详解
2019/03/27 PHP
JavaScript判断一个URL链接是否有效的实现方法
2011/10/08 Javascript
jQuery对html元素取值与赋值的方法
2013/11/20 Javascript
利用JQuery制作符合Web标准的QQ弹出消息
2014/01/14 Javascript
jquery中的常用事件bind、hover、toggle等示例介绍
2014/07/21 Javascript
非jQuery实现照片散落桌子上,单击放大的LightBox效果
2014/11/28 Javascript
javascript实现省市区三级联动下拉框菜单
2015/11/17 Javascript
javascript多物体运动实现方法分析
2016/01/08 Javascript
灵活的理解JavaScript中的this指向
2016/02/25 Javascript
Angularjs---项目搭建图文教程
2016/07/08 Javascript
Angular Module声明和获取重载实例代码
2016/09/14 Javascript
js实现页面刷新滚动条位置不变
2016/11/27 Javascript
JS作用域深度解析
2016/12/29 Javascript
轻松实现jQuery添加删除按钮Click事件
2017/03/13 Javascript
Angular.Js之Scope作用域的学习教程
2017/04/27 Javascript
浅谈vuex之mutation和action的基本使用
2017/08/29 Javascript
vue动态配置模板 'component is'代码
2019/07/04 Javascript
小程序接入腾讯位置服务的详细流程
2020/03/03 Javascript
Vue使用Three.js加载glTF模型的方法详解
2020/06/14 Javascript
详解element-ui动态限定的日期范围选择器代码片段
2020/07/03 Javascript
vue或react项目生产环境去掉console.log的操作
2020/09/02 Javascript
js+canvas实现转盘效果(两个版本)
2020/09/13 Javascript
python中列表和元组的区别
2017/12/18 Python
使用Python自动生成HTML的方法示例
2019/08/06 Python
Python利用socket模块开发简单的端口扫描工具的实现
2021/01/27 Python
CSS3 translate导致字体模糊的实例代码
2019/08/30 HTML / CSS
Linden Leaves官网:新西兰纯净护肤品
2020/12/20 全球购物
《分一分》教学反思
2014/04/13 职场文书
考生诚信考试承诺书
2015/04/29 职场文书
大学生入党自传2015
2015/06/26 职场文书
写作技巧:如何撰写一份优秀的营销策划书
2019/08/13 职场文书
MyBatis-Plus 批量插入数据的操作方法
2021/09/25 Java/Android