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 相关文章推荐
一个很方便的 XML 类!!原创的噢
Oct 09 PHP
php4的session功能评述(三)
Oct 09 PHP
在PHP里得到前天和昨天的日期的代码
Aug 16 PHP
关于Sphinx创建全文检索的索引介绍
Jun 25 PHP
PHP遍历并打印指定目录下所有文件实例
Feb 10 PHP
用PHP来计算某个目录大小的方法
Apr 01 PHP
PHP函数分享之curl方式取得数据、模拟登陆、POST数据
Jun 04 PHP
成为好程序员必须避免的5个坏习惯
Jul 04 PHP
js+php实现静态页面实时调用用户登陆状态的方法
Jan 04 PHP
PHP模板引擎Smarty自定义变量调解器用法
Apr 11 PHP
PHP设计模式之外观模式(Facade)入门与应用详解
Dec 13 PHP
PHP数组array类常见操作示例
May 15 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关键字仅替换一次的实现函数
2015/10/29 PHP
PHP在弹框中获取foreach中遍历的id值并传递给地址栏
2017/06/13 PHP
ThinkPHP 3.2.3实现加减乘除图片验证码
2018/12/05 PHP
使用vs code编辑调试php配置的方法
2019/01/29 PHP
thinkphp诸多限制条件下如何getshell详解
2020/12/09 PHP
效率高的Javscript字符串替换函数的benchmark
2008/08/02 Javascript
javascript 节点遍历函数
2010/03/28 Javascript
javascript 学习笔记(六)浏览器类型及版本信息检测代码
2011/04/08 Javascript
单击按钮显示隐藏子菜单经典案例
2013/01/04 Javascript
一款jquery特效编写的大度宽屏焦点图切换特效的实例代码
2013/08/05 Javascript
js中的for如何实现foreach中的遍历
2014/05/31 Javascript
JavaScript删除数组元素的方法
2015/03/20 Javascript
jQuery验证插件validation使用指南
2015/04/21 Javascript
JS数字抽奖游戏实现方法
2015/05/04 Javascript
JS实现登录页面记住密码和enter键登录方法推荐
2016/05/10 Javascript
基于node.js express mvc轻量级框架实践
2017/09/14 Javascript
新版vue-cli模板下本地开发环境使用node服务器跨域的方法
2018/04/03 Javascript
JS表格的动态操作完整示例
2020/01/13 Javascript
使用vue引入maptalks地图及聚合效果的实现
2020/08/10 Javascript
Python中的random()方法的使用介绍
2015/05/15 Python
Python方法的延迟加载的示例代码
2017/12/18 Python
python实现剪切功能
2019/01/23 Python
Python列表对象实现原理详解
2019/07/01 Python
python 将字符串中的数字相加求和的实现
2019/07/18 Python
python xlwt如何设置单元格的自定义背景颜色
2019/09/03 Python
基于python3抓取pinpoint应用信息入库
2020/01/08 Python
Roxy美国官网:澳大利亚冲浪、滑雪健身品牌
2016/07/30 全球购物
Pretty Little Thing美国:时尚女性服饰
2018/08/27 全球购物
乌克兰电子和家用电器商店:Foxtrot
2019/07/23 全球购物
美国隐形眼镜网上商店:Lens.com
2019/09/03 全球购物
美国沃尔玛网上超市:Walmart
2020/08/14 全球购物
高中生学习生活的自我评价
2013/10/09 职场文书
2014年秋季新学期寄语
2014/08/02 职场文书
亲子运动会的活动方案
2014/08/17 职场文书
北京青年观后感
2015/06/15 职场文书
2019通用版劳动合同范本!
2019/07/11 职场文书