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算开始时间到过期时间的相隔的天数
Jan 12 PHP
vs中通过剪切板循环来循环粘贴不同内容
Apr 30 PHP
phpmyadmin提示The mbstring extension is missing的解决方法
Dec 17 PHP
使用PHP实现阻止用户上传成人照片或者裸照
Dec 25 PHP
WordPress中创建用户角色的相关PHP函数使用详解
Dec 25 PHP
解析WordPress中控制用户登陆和判断用户登陆的PHP函数
Mar 01 PHP
PHP模板引擎Smarty中变量的使用方法示例
Apr 11 PHP
php基于dom实现的图书xml格式数据示例
Feb 03 PHP
PHP实现的mysql主从数据库状态检测功能示例
Jul 20 PHP
php表单文件iframe异步上传实例讲解
Jul 26 PHP
PHP PDOStatement::fetchAll讲解
Jan 31 PHP
如何用RabbitMQ和Swoole实现一个异步任务系统
May 29 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
论建造顺序的重要性
2020/03/04 星际争霸
PHP定时自动生成静态HTML的实现代码
2010/06/20 PHP
把1316这个数表示成两个数的和,其中一个为13的倍数,另一个是11的倍数,求这两个数。
2011/06/24 PHP
Aster vs KG BO3 第一场2.19
2021/03/10 DOTA
jquery 选项卡效果 新手代码
2011/07/08 Javascript
基于jquery的点击链接插入链接内容的代码
2012/07/31 Javascript
javascript数组的使用
2013/03/28 Javascript
实测jquery data()如何存值
2013/08/18 Javascript
jQuery实现的手机发送验证码倒计时效果代码分享
2015/08/24 Javascript
基于JavaScript实现树形下拉框
2016/08/10 Javascript
原生JavaScript来实现对dom元素class的操作方法(推荐)
2017/08/16 Javascript
Vue按需加载的具体实现
2017/12/02 Javascript
JS控制鼠标拒绝点击某一按钮的实例
2017/12/29 Javascript
vue实现模态框的通用写法推荐
2018/02/26 Javascript
如何手写一个简易的 Vuex
2020/10/10 Javascript
[03:57]2016完美“圣”典风云人物:rOtk专访
2016/12/09 DOTA
Windows下Anaconda的安装和简单使用方法
2018/01/04 Python
对Python 检查文件名是否规范的实例详解
2019/06/10 Python
Python实现二叉树的最小深度的两种方法
2019/09/30 Python
Python3.7安装keras和TensorFlow的教程图解
2020/06/18 Python
使用pandas实现连续数据的离散化处理方式(分箱操作)
2019/11/22 Python
numpy按列连接两个维数不同的数组方式
2019/12/06 Python
使用keras实现Precise, Recall, F1-socre方式
2020/06/15 Python
Python 3.10 的首个 PEP 诞生,内置类型 zip() 迎来新特性(推荐)
2020/07/03 Python
运动鞋、足球鞋和慕尼黑球衣:Sport Münzinger
2019/08/26 全球购物
Android面试题附答案
2014/12/08 面试题
Linux管理员面试题 Linux admin interview questions
2016/07/08 面试题
大学毕业生文采飞扬的自我鉴定
2013/12/03 职场文书
个人评价范文分享
2014/01/11 职场文书
《翻越远方的大山》教学反思
2014/04/13 职场文书
网页美工求职信范文
2014/04/17 职场文书
施工安全承诺书
2014/05/22 职场文书
中秋节国旗下演讲稿
2014/09/13 职场文书
医药公司采购员岗位职责
2015/04/03 职场文书
Python控制台输出俄罗斯方块的方法实例
2021/04/17 Python
Java SSH 秘钥连接mysql数据库的方法
2021/06/28 Java/Android