58 lines
1.0 KiB
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()
|
|
{
|
|
}
|
|
}
|