シングルトンパターン

 シングルトンパターンは、ソフトウェア設計の中で使われるデザインパターンの一つです。
このパターンの目的は、特定のクラスが唯一のインスタンスを持つようにすることです。
シングルトンパターンを使用すると、複数の場所から同じインスタンスにアクセスでき、データの一貫性を保つことができます。

 LoggerSingletonクラスは、ログメッセージを管理するための唯一のインスタンスを提供します。
getInstance()メソッドを使用して、この唯一のインスタンスにアクセスできます。

 ログメッセージはaddMessage()メソッドを使って追加し、showMessages()メソッドで表示できます。
シングルトンパターンにより、どこからでも同じログ記録器にアクセスでき、ログメッセージを一貫して管理できます。

<?php

class LoggerSingleton
{
    private static LoggerSingleton $instance;

    private array $messages = [];

    public static function getInstance(): self
    {
        if (isset(self::$instance)) {
            return self::$instance;
        }

        self::$instance = new self();

        return self::$instance;
    }

    public function addMessage(string $message): void
    {
        $this->messages[] = $message;
    }

    public function showMessages(): void
    {
        foreach ($this->messages as $message) {
            echo $message . PHP_EOL;
        }
    }

    private function __construct()
    {
        // 外部からのインスタンス作成禁止
    }

    private function __clone(): void
    {
        // 外部からのインスタンス複製禁止
    }
}
                    
<?php

$loggerSingleton = LoggerSingleton::getInstance();
$loggerSingleton->addMessage('Message A');
$loggerSingleton->addMessage('Message B');
$loggerSingleton->showMessages();