1. ホーム
  2. php

[解決済み】PHP5でSingletonデザインパターンを作成する

2022-04-11 05:23:04

質問

PHP5のクラスを使ってシングルトンクラスを作るにはどうしたらいいでしょうか?

どのように解決するのですか?

/**
 * 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/en/language.variables.scope.php#language.variables.scope.static は、静的変数のスコープを理解し、なぜ static $inst = null; が動作します。