使用self :: $ _ instance = new self()有什么意义?

Joe*_*tto 2 php

我正在学习OOP PHP,并且遇到了这个问题:

//Store the single instance
private static $_instance;

/*
    Get an instance of the database
    @return database
*/
public static function getInstance () {
    if (!self::$_instance) {
        self::$_instance = new self();
    }
    return self::$_instance;
}
Run Code Online (Sandbox Code Playgroud)

设置$_instance新的意义self()何在?我知道这行所做的就是创建它所在的类的新实例,但是为什么要这样做呢?有什么理由会需要吗?我什至在课堂上再也没有这样称呼过。感谢您的高级帮助。

Eve*_*ert 5

这个想法是,每当在整个代码中调用getInstance()时,总会得到相同的实例。

在某些情况下,您只想访问同一对象,这很有用。通常,此类对象可能具有私有构造函数,这实际上迫使您始终对同一实例(也称为单例)进行操作。

人们通常说“单子是邪恶的”。最好避免使用它们,因为它们可能会引起主要的设计问题。在某些情况下,它们仍然是一个好主意。