vk/system/Traits/Registry.php

79 lines
1.5 KiB
PHP

<?php
declare(strict_types=1);
namespace VK\Traits;
/**
* Паттерн registry
*/
trait Registry
{
/**
* Хеш-таблица реестра
*
* @var array
*/
protected static array $registry = [];
/**
* Блокировка конструктора
*/
protected function __construct()
{
}
/**
* Запись в реестр
*
* @param mixed $key
* @param mixed $value
*
* @return void
*/
public static function set(int $key, $value): bool
{
if (!array_key_exists($key, self::$registry)) {
self::$registry[$key] = $value;
return true;
}
return false;
}
/**
* Извлечение из реестра
*
* Если не отправить ключ, то вернёт все значения
*
* @param mixed $key
*
* @return false|mixed
*/
public static function get(int $key = null)
{
if (isset($key) && array_key_exists($key, self::$registry)) {
return self::$registry[$key];
} else {
return self::$registry;
}
}
/**
* Удалить из реестра
*
* @param string $key
* @return void
*/
public static function remove(int $key): bool
{
if (array_key_exists($key, self::$registry)) {
unset(self::$registry[$key]);
return true;
}
return false;
}
}