vk/sources/Traits/Singleton.php

58 lines
1.0 KiB
PHP

<?php
declare(strict_types=1);
namespace VK\Traits;
/**
* Паттерн singleton
*/
trait Singleton
{
/**
* Экземпляр класса
*
* @var LoggerAbstract
*/
protected static $instance;
/**
* Блокировка конструктора
*/
protected function __construct()
{
}
/**
* Инициализатор экземпляра класса
*
* @return LoggerAbstract
*/
public static function init(): self
{
if (self::$instance === null) self::$instance = new self;
return self::$instance;
}
/**
* Блокировка магического метода __clone()
*/
private function __clone()
{
}
/**
* Блокировка магического метода __sleep()
*/
private function __sleep()
{
}
/**
* Блокировка магического метода __wakeup()
*/
private function __wakeup()
{
}
}