Пример паттерна одиночка (singleton) на php

08.03.2019

Пример базового класса для паттерна одиночка на php

 
<?php

namespace Bp\Template\Oddler;

/**
 * Класс Паттерн одиночка
 */
class Singleton
{
    /**
     *
     * @var object Instance
     *
     */
    protected static $instances = [];

    /**
     * Возвращает единственный экземпляр объекта
     *
     * @return object
     */
    public static function getInstance()
    {
        $class = get_called_class();
        if (!isset(self::$instances[$class])) {
            self::$instances[$class] = new static();
        }
        return self::$instances[$class];
    }

    // Предотвращаем создание
    //----------------------\/\/\/\/\/----------------------------
    private function __construct()
    {
    }

    //private function __clone()
    public function __clone()
    {
        trigger_error('Clone is not allowed.', E_USER_ERROR);
    }

    //private function __wakeup()
    public function __wakeup()
    {
        trigger_error('Unserializing is not allowed.', E_USER_ERROR);
    }
    //----------------------/\/\/\/\/\----------------------------
}


Категории: PHP
Пометки: getInstance