[Dictionary] добавлен метод AddRange (array $dictionary), который добавляет элементы в виде ассоциативного массива ключ => значение в словарь. [Dictionary] Добавлен метод ToArray (), который возвращает все элементы словаря в виде массива..
		
			
				
	
	
		
			153 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			153 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?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.3
 | ||
|  * @since 1.0.14
 | ||
|  */
 | ||
| final class Dictionary implements ArrayAccess, IteratorAggregate, Countable, ISerializable
 | ||
| {
 | ||
|     /**
 | ||
|      * @var array $Container Контейнер.
 | ||
|      */
 | ||
|     private array $Container = [];
 | ||
| 
 | ||
|     // Реализация наследуемых интерфейсов и классов
 | ||
|     use ArrayBasicTrait;
 | ||
| 
 | ||
|     /**
 | ||
|      * Добавление элементов в словарь.
 | ||
|      *
 | ||
|      * @param array $dictionary Ассоциативный массив вида ключ => значение, который будет добавлен в словарь.
 | ||
|      *
 | ||
|      * @return void
 | ||
|      */
 | ||
|     public function AddRange (array $dictionary): void
 | ||
|     {
 | ||
|         // Для каждого элемента массива
 | ||
|         foreach ($dictionary as $key => $value)
 | ||
|             // - добавляем его в словарь.
 | ||
|             $this->Add($key, $value);
 | ||
|     }
 | ||
| 
 | ||
|     /**
 | ||
|      * Добавление элемента в словарь.
 | ||
|      *
 | ||
|      * @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);
 | ||
|     }
 | ||
| 
 | ||
|     /**
 | ||
|      * Возвращает все ключи словаря.
 | ||
|      *
 | ||
|      * @return array Массив всех ключей словаря.
 | ||
|      */
 | ||
|     public function Keys (): array
 | ||
|     {
 | ||
|         return array_keys($this->Container);
 | ||
|     }
 | ||
| 
 | ||
|     /**
 | ||
|      * Сортирует внутренние данные по ключам.
 | ||
|      *
 | ||
|      * @param bool $descending Сортировать ли данные в обратном порядке?
 | ||
|      *
 | ||
|      * @return void
 | ||
|      */
 | ||
|     public function Sort (bool $descending = false): void
 | ||
|     {
 | ||
|         // Если задана сортировка по убыванию
 | ||
|         if ($descending)
 | ||
|             // - сортируем данные в обратном порядке
 | ||
|             krsort($this->Container);
 | ||
|         else
 | ||
|             // - иначе, стандартная сортировка по ключам в порядке возрастания
 | ||
|             ksort($this->Container);
 | ||
|     }
 | ||
| 
 | ||
|     /**
 | ||
|      * Возвращает все элементы словаря в виде массива.
 | ||
|      *
 | ||
|      * @return array Массив, содержащий все элементы словаря.
 | ||
|      */
 | ||
|     public function ToArray (): array
 | ||
|     {
 | ||
|         return $this->Container;
 | ||
|     }
 | ||
| } |