文档章节

PHP单例模式实现数据库连接

Nixus
 Nixus
发布于 2014/11/05 11:28
字数 174
阅读 149
收藏 5
class DB
{
    private $db_config = './config.php';
    private static $_instance;

    private function __construct()
    {
        if (file_exists($this->db_config)) {
            require $this->db_config;
            self::$_instance = new mysqli($db_host, $db_name, $db_passwd);
        } else {
            throw new Exception('not found database configuration file.');
        }
    }
    
    /**
     * 单例方法 用户访问实例的静态方法
     *
     * @return void
     */
    public function getInstance() {
        if (self::$_instance == null) {
            self::$_instance = new self;
        }
        file_put_contents('2.txt', var_export(self::$_instance,true), FILE_APPEND);
        return self::$_instance;
    }

    /**
     * 防止对象被克隆
     *
     * @return void
     */
    private function __clone()
    {
        trigger_error('Clone is not allow!', E_USER_ERROR);
    }
}

试着用单例模式写了一个数据库连接,在执行的时候,发现通过  getInstance()  方法获取到的只是  $db_config  ,并没有获取到实例化后的   mysqli  对象,想请问下,问题出在哪里?

还有哪些地方可以做优化?


© 著作权归作者所有

Nixus
粉丝 10
博文 20
码字总数 4985
作品 0
广州
程序员
私信 提问
加载中

评论(2)

zy643208
zy643208
网上很多列子,参考参考吧
Raynor1
Raynor1
好吧。。其实php里面差不多的。。嗯 。。。即使使用了单例 。。效果也不会有太大的改善。。其实可以放在代码的可读上面 。。
编程中的那些套路——关于单例模式

该文章属于《编程中的那些经典套路——设计模式汇总》系列,并且以下内容基于语言PHP 在设计模式中,单例模式和工厂模式)可以说是使用的最普遍的设计模式了,所以掌握此种模式尤为重要。 单...

gzchen
2018/08/27
0
0
Python学习:19.Python设计模式-单例模式

一、单例模式存在的意义   在这里的单例就是只有一个实例(这里的实例就像在面向对象的时候,创建了一个对象也可以说创建了一个实例),只用一个实例进行程序设计,首先我们可以了解一下什...

BD-ld-2017
2018/07/31
0
0
PHP设计模式(一):简介及创建型模式

我们分三篇文章来总结一下设计模式在PHP中的应用,这是第一篇创建型模式。 一、设计模式简介 首先我们来认识一下什么是设计模式: 设计模式是一套被反复使用、容易被他人理解的、可靠的代码设...

juhenj
2014/05/15
228
2
TP5.0 Redis(单例模式)(原)

看到好多面试都问设计模式,我就简单的了解了一下,顺便把之前封装好的Reis做了一次修改. 单例模式(Singleton Pattern 单件模式或单元素模式) 单例模式确保某个类只有一个实例,而且自行实例...

豆花饭烧土豆
2018/08/09
0
0
Java之23种设计模式解析(二)

B、结构模式(7 种) 我们接着讨论设计模式,上篇文章我讲完了 5 种创建型模式,这章开始,我将讲下 7 种结构型模式:适配器模式、装饰模式、代理模式、外观模式、桥接模式、组合模式、享元模...

wersdffg
2015/02/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Jenkins系列_插件安装及报错处理

进入Jenkins之后我们可以进行插件的安装,插件管理位于以下模块: 发现上面报了一堆错误,是因为插件的依赖没有安装好,那么这一节,就先把这些错误解决掉吧。解决完成后,也就基本会使用插件...

shzwork
今天
2
0
mysql mysql的所有查询语句和聚合函数(整理一下,忘记了可以随时看看)

查询所有字段 select * from 表名; 查询自定字段 select 字段名 from 表名; 查询指定数据 select * from 表名 where 条件; 带关键字IN的查询 select * from 表名 where 条件 [not] in(元素...

edison_kwok
昨天
9
0
多线程同时加载缓存实现

import com.google.common.cache.Cache;import com.google.common.cache.CacheBuilder;import java.util.concurrent.ExecutionException;import java.util.concurrent.ExecutorServi......

暗中观察
昨天
3
0
利用VisualVM 内存查看

准备工作,建几个测试类。等下就是要查看这几个类里面的属性 package visualvm;public class MultiObject { private String str; private int i; MultiObject(String str...

冷基
昨天
2
0
组装一台工作游戏两用机

一、配置清单如下: 分类 项目 价格(元) 主板 华硕(ASUS)TUF Z370-PLUS GAMING II 电竞特工 Z370二代 支持9代CPU 1049 CPU 英特尔(Intel) i7 8700K 酷睿六核 盒装CPU处理器 2640 风扇 九...

mbzhong
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部