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 相关文章推荐
windows xp下安装pear
Dec 02 PHP
PHP截断标题且兼容utf8和gb2312编码
Sep 22 PHP
php数组转成json格式的方法
Mar 09 PHP
基于laravel制作APP接口(API)
Mar 15 PHP
解决PHP 7编译安装错误:cannot stat ‘phar.phar’: No such file or directory
Feb 25 PHP
php获取今日开始时间和结束时间的方法
Feb 27 PHP
PHP删除数组中指定下标的元素方法
Feb 03 PHP
实例讲解PHP页面静态化
Feb 05 PHP
thinkPHP3.2.3结合Laypage实现的分页功能示例
May 28 PHP
ThinkPHP like模糊查询,like多匹配查询,between查询,in查询,一般查询书写方法
Sep 26 PHP
PHP Laravel中的Trait使用方法
Jan 20 PHP
PHP实现百度人脸识别
May 06 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/04 PHP
php curl中gzip的压缩性能测试实例分析
2016/11/08 PHP
基于Laravel5.4实现多字段登录功能方法示例
2017/08/11 PHP
php统计数组不同元素的个数的实例方法
2019/09/26 PHP
js获得鼠标的坐标值的方法
2013/03/13 Javascript
Javascript selection的兼容性写法介绍
2013/12/20 Javascript
javascript实现控制浏览器全屏
2015/03/30 Javascript
基于Bootstrap重置输入框内容按钮插件
2016/05/12 Javascript
基于BootStrap环境写jQuery tabs插件
2016/07/12 Javascript
jQueryUI 拖放排序遇到滚动条时有可能无法执行排序的小bug及解决方案
2016/12/19 Javascript
深入理解vue中slot与slot-scope的具体使用
2018/01/26 Javascript
详解Vue组件插槽的使用以及调用组件内的方法
2018/11/13 Javascript
jQuery利用FormData上传文件实现批量上传
2018/12/04 jQuery
HTML+JavaScript实现扫雷小游戏
2019/09/30 Javascript
vue 实现特定条件下绑定事件
2019/11/09 Javascript
[01:14]DOTA2亚洲邀请赛小组赛赛前花絮
2017/03/27 DOTA
python获取局域网占带宽最大3个ip的方法
2015/07/09 Python
python开发之基于thread线程搜索本地文件的方法
2015/11/11 Python
Python中的字符串类型基本知识学习教程
2016/02/04 Python
利用python实现xml与数据库读取转换的方法
2017/06/17 Python
http请求 request失败自动重新尝试代码示例
2018/01/25 Python
对numpy中二进制格式的数据存储与读取方法详解
2018/11/01 Python
python学习--使用QQ邮箱发送邮件代码实例
2019/04/16 Python
python读取并写入mat文件的方法
2019/07/12 Python
Python传递参数的多种方式(小结)
2019/09/18 Python
Python 元组操作总结
2019/09/18 Python
python读写Excel表格的实例代码(简单实用)
2019/12/19 Python
关于win10在tensorflow的安装及在pycharm中运行步骤详解
2020/03/16 Python
python中如何打包用户自定义模块
2020/09/23 Python
Python3中的tuple函数知识点讲解
2021/01/03 Python
数控专业大学生的自我鉴定
2013/11/13 职场文书
小学毕业感言150字
2014/02/05 职场文书
小露珠教学反思
2014/04/30 职场文书
求职信的正确写法
2014/07/10 职场文书
群众路线教育实践活动总结
2014/10/30 职场文书
PYTHON基于Pyecharts绘制常见的直角坐标系图表
2022/04/28 Python