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()
|
||
|
{
|
||
|
}
|
||
|
}
|