2020-07-09 22:17:26 +07:00
|
|
|
<?php
|
|
|
|
|
|
|
|
declare(strict_types=1);
|
|
|
|
|
|
|
|
namespace VK\Traits;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Паттерн singleton
|
|
|
|
*/
|
|
|
|
trait Singleton
|
|
|
|
{
|
|
|
|
/**
|
2020-09-26 17:28:13 +07:00
|
|
|
* Экземпляр класса
|
2020-07-09 22:17:26 +07:00
|
|
|
*
|
2020-09-26 17:28:13 +07:00
|
|
|
* @var object
|
2020-07-09 22:17:26 +07:00
|
|
|
*/
|
2020-09-26 17:28:13 +07:00
|
|
|
protected static object $instance;
|
2020-07-09 22:17:26 +07:00
|
|
|
|
|
|
|
/**
|
2020-09-26 17:28:13 +07:00
|
|
|
* Заблокирован
|
2020-07-09 22:17:26 +07:00
|
|
|
*/
|
|
|
|
protected function __construct()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2020-09-26 17:28:13 +07:00
|
|
|
* Инициализация
|
2020-07-09 22:17:26 +07:00
|
|
|
*
|
2020-09-26 17:28:13 +07:00
|
|
|
* @return self
|
2020-07-09 22:17:26 +07:00
|
|
|
*/
|
|
|
|
public static function init(): self
|
|
|
|
{
|
2020-09-26 17:28:13 +07:00
|
|
|
if (!isset(self::$instance)) {
|
2020-09-17 19:27:12 +07:00
|
|
|
self::$instance = new self;
|
|
|
|
}
|
2020-07-09 22:17:26 +07:00
|
|
|
return self::$instance;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2020-09-26 17:28:13 +07:00
|
|
|
* Заблокирован
|
2020-07-09 22:17:26 +07:00
|
|
|
*/
|
|
|
|
private function __clone()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2020-09-26 17:28:13 +07:00
|
|
|
* Заблокирован
|
2020-07-09 22:17:26 +07:00
|
|
|
*/
|
|
|
|
private function __sleep()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2020-09-26 17:28:13 +07:00
|
|
|
* Заблокирован
|
2020-07-09 22:17:26 +07:00
|
|
|
*/
|
|
|
|
private function __wakeup()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
}
|