用于编写此PHP代码的设计模式是什么?

时间:2018-07-16 09:19:18

标签: php

此代码的设计模式是什么?

class Foo {
    private $_connection;
    private static $_instance;
    private $_host = "Host";
    private $_username = "Name";
    private $_password = "encrypted Word";
    private $_database = "Name";

    public static function getInstance() {
        if(self::$_instance = 'Connected') {
            self::$_instance = new self();
        } 

        return self::$_instance;
    }

    private function __construct() {
        $this->_connection = new mysqli($this->_host, $this->_username,
            $this->_password, $this->_database);
    }

    public function getConnection() {
        return $this->_connection;
    }

}

1 个答案:

答案 0 :(得分:0)

这可能是一个单例,但目前存在错误,无法按预期工作。

单例的目的是,只有一个类的实例,而不能创建另一个实例。为此,创建了一个静态方法(getInstance),该方法存储该类的实例并延迟实例化它。

当前有一个错误

if (self::$instance = 'Contected') ...

首先,这不是一个比较,因此,该值始终为true,每次调用getInstance时,实际上是创建一个新值,而不是返回单例。

应更改为

if (!self::$instance) ...

要获取实际的单例,只需调用getInstance方法。

$foo = Foo::getInstance();