一尘不染

在PHP5中创建Singleton设计模式

php

一个人如何使用PHP5类创建Singleton类?


阅读 268

收藏
2020-05-26

共1个答案

一尘不染

/**
 * Singleton class
 *
 */
final class UserFactory
{
    /**
     * Call this method to get singleton
     *
     * @return UserFactory
     */
    public static function Instance()
    {
        static $inst = null;
        if ($inst === null) {
            $inst = new UserFactory();
        }
        return $inst;
    }

    /**
     * Private ctor so nobody else can instantiate it
     *
     */
    private function __construct()
    {

    }
}

使用方法:

$fact = UserFactory::Instance();
$fact2 = UserFactory::Instance();

$fact == $fact2;

但:

$fact = new UserFactory()

引发错误。

请参阅http://php.net/manual/zh-
CN/language.variables.scope.php#language.variables.scope.static了解静态变量范围以及为什么设置static $inst = null;有效。

2020-05-26