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