Создание шаблона проектирования Singleton в PHP5

К сожалению, Inwdr's answer не работает patterns при наличии нескольких подклассов.

Вот php правильный наследуемый базовый php класс Singleton.

class Singleton
{
    private static $instances = array();
    protected function __construct() {}
    protected function __clone() {}
    public function __wakeup()
    {
        throw new Exception("Cannot unserialize singleton");
    }

    public static function getInstance()
    {
        $cls = get_called_class(); // late-static-bound class name
        if (!isset(self::$instances[$cls])) {
            self::$instances[$cls] = new static;
        }
        return self::$instances[$cls];
    }
}

Тестовый patterns код:

class Foo extends Singleton {}
class Bar extends Singleton {}

echo get_class(Foo::getInstance()) . "\n";
echo get_class(Bar::getInstance()) . "\n";

php

oop

design-patterns

singleton

2022-11-05T10:28:11+00:00
Вопросы с похожей тематикой, как у вопроса:

Создание шаблона проектирования Singleton в PHP5