没有参数或可执行代码的PHP构造函数

jst*_*s85 3 php singleton

在了解设计模式的同时,我遇到了单例模式:

class Singleton
{
    private static $instance = null;

    private function __construct()
    {
    }

    public static function getInstance()
    {
        if (self::$instance === null) {
            self::$instance = new self();
        }

        return self::$instance;
    }
}
Run Code Online (Sandbox Code Playgroud)

我很难理解构造函数在这种情况下的作用.大括号之间没有执行任何代码?这是如何运作的?谢谢.

Mam*_*iop 6

标记的构造函数private用于避免单例类的实例化,因此始终只有一个.

例如,我们不能这样做:

$singleton = new Singleton();
Run Code Online (Sandbox Code Playgroud)

它产生:

致命错误:从无效上下文调用私有Singleton :: __ construct()

你必须获取单身人士:

$singleton = Singleton::getInstance();
Run Code Online (Sandbox Code Playgroud)