20250515
* [ObjectArrayBasicTrait] заменён на [ArrayBasicTrait]. * [ArrayBasicTrait] изменён метод __isset. Теперь он обрабатывается корректно. * [ArrayBasicTrait] методы Serialize и UnSerialize теперь используют json_encode / json_decode * [+Dictionary] Класс, описывающий словарь типа строка (ключ) -> значение любого типа (значение).
This commit is contained in:
100
sources/classes/Dictionary.php
Normal file
100
sources/classes/Dictionary.php
Normal file
@@ -0,0 +1,100 @@
|
||||
<?php
|
||||
|
||||
namespace goodboyalex\php_components_pack\classes;
|
||||
|
||||
use ArrayAccess;
|
||||
use Countable;
|
||||
use goodboyalex\php_components_pack\interfaces\ISerializable;
|
||||
use goodboyalex\php_components_pack\traits\ArrayBasicTrait;
|
||||
use IteratorAggregate;
|
||||
|
||||
/**
|
||||
* Класс, описывающий словарь типа строка (ключ) -> значение любого типа (значение).
|
||||
*
|
||||
* @author Александр Бабаев
|
||||
* @package php_components_pack
|
||||
* @version 1.0
|
||||
* @since 1.0.14
|
||||
*/
|
||||
final class Dictionary implements ArrayAccess, IteratorAggregate, Countable, ISerializable
|
||||
{
|
||||
/**
|
||||
* @var array $Container Контейнер.
|
||||
*/
|
||||
private array $Container = [];
|
||||
|
||||
// Реализация наследуемых интерфейсов и классов
|
||||
use ArrayBasicTrait;
|
||||
|
||||
/**
|
||||
* Добавление элемента в словарь.
|
||||
*
|
||||
* @param string $key Ключ.
|
||||
* @param mixed $value Хранимое значение.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function Add (string $key, mixed $value): void
|
||||
{
|
||||
$this->Container[$key] = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Получение значения по ключу.
|
||||
*
|
||||
* @param string $key Ключ.
|
||||
* @param mixed $default Значение по умолчанию, которое будет возвращено, если элемент с указанным ключом
|
||||
* отсутствует.
|
||||
*
|
||||
* @return mixed Если элемент существует, то возвращается его значение, иначе default.
|
||||
*/
|
||||
public function Get (string $key, mixed $default = null): mixed
|
||||
{
|
||||
return $this->Container[$key] ?? $default;
|
||||
}
|
||||
|
||||
/**
|
||||
* Удаление элемента по ключу.
|
||||
*
|
||||
* @param string $key Ключ.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function Remove (string $key): void
|
||||
{
|
||||
// Если элемент с указанным ключом существует
|
||||
if ($this->Has($key))
|
||||
// - то удаляем его.
|
||||
unset($this->Container[$key]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверка наличия элемента с указанным ключом.
|
||||
*
|
||||
* @param string $key Ключ.
|
||||
*
|
||||
* @return bool Есть ли элемент с указанным ключом.
|
||||
*/
|
||||
public function Has (string $key): bool
|
||||
{
|
||||
return isset($this->Container[$key]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Очистка всех элементов.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function Clear (): void
|
||||
{
|
||||
$this->Container = [];
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function count (): int
|
||||
{
|
||||
return count($this->Container);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user