2020-07-09 22:17:26 +07:00
|
|
|
<?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
|
|
|
|
{
|
2020-09-17 19:27:12 +07:00
|
|
|
if (self::$instance === null) {
|
|
|
|
self::$instance = new self;
|
|
|
|
}
|
2020-07-09 22:17:26 +07:00
|
|
|
return self::$instance;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Блокировка магического метода __clone()
|
|
|
|
*/
|
|
|
|
private function __clone()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Блокировка магического метода __sleep()
|
|
|
|
*/
|
|
|
|
private function __sleep()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Блокировка магического метода __wakeup()
|
|
|
|
*/
|
|
|
|
private function __wakeup()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
}
|