75 lines
1.5 KiB
PHP
75 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 string $key
|
|
* @param mixed $item
|
|
* @return void
|
|
*/
|
|
public static function set(int $key, $item): bool
|
|
{
|
|
if (!array_key_exists($key, self::$registry)) {
|
|
self::$registry[$key] = $item;
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Получить из реестра по ключу
|
|
*
|
|
* Если не отправить ключ, то вернёт все значения
|
|
*
|
|
* @param string $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;
|
|
}
|
|
}
|