<?php
/**
 * Интерфейс словаря.
 * @package freecms
 */

namespace freecms\components;

/**
 * Словарь
 */
interface IDictionary
{
    /**
     * Добавление строки в словарь
     * @param string $key Ключ
     * @param mixed $value Значение
     * @return void
     */
    public function add(string $key, mixed $value): void;

    /**
     * Получение значения по ключу
     * @param string $key Ключ
     * @return mixed
     */
    public function get(string $key): mixed;

    /**
     * Обновление значения
     * @param string $key Ключ
     * @param mixed $newValue Новое значение
     * @return void
     */
    public function update(string $key, mixed $newValue): void;

    /**
     * Получение всех ключей
     * @return array Одномерный массив ключей
     */
    public function getAllKeys(): array;

    /**
     * Проверяет существование ключа
     * @param string $key Ключ
     * @return bool
     */
    public function isKeyExists(string $key): bool;

    /**
     * Удаляет ключ
     * @param string $key Ключ
     * @return void
     */
    public function remove(string $key): void;

    /**
     * Очищает словарь
     * @return void
     */
    public function clear(): void;
}
