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); | ||||
|     } | ||||
| } | ||||
| @@ -5,7 +5,7 @@ namespace goodboyalex\php_components_pack\classes; | ||||
| use ArrayAccess; | ||||
| use Countable; | ||||
| use goodboyalex\php_components_pack\interfaces\ISerializable; | ||||
| use goodboyalex\php_components_pack\traits\ObjectArray\ObjectArrayBasicTrait; | ||||
| use goodboyalex\php_components_pack\traits\ArrayBasicTrait; | ||||
| use goodboyalex\php_components_pack\traits\ObjectArray\ObjectArrayConstantsTrait; | ||||
| use goodboyalex\php_components_pack\traits\ObjectArray\ObjectArrayLINQTrait; | ||||
| use goodboyalex\php_components_pack\traits\ObjectArray\ObjectArraySearchAndSortTrait; | ||||
| @@ -28,7 +28,7 @@ final class ObjectArray implements ArrayAccess, IteratorAggregate, Countable, IS | ||||
|     private array $Container; | ||||
|  | ||||
|     // Реализация наследуемых интерфейсов и классов | ||||
|     use ObjectArrayBasicTrait; | ||||
|     use ArrayBasicTrait; | ||||
|  | ||||
|     // Константы | ||||
|     use ObjectArrayConstantsTrait; | ||||
|   | ||||
| @@ -1,18 +1,18 @@ | ||||
| <?php | ||||
| 
 | ||||
| namespace goodboyalex\php_components_pack\traits\ObjectArray; | ||||
| namespace goodboyalex\php_components_pack\traits; | ||||
| 
 | ||||
| use ArrayIterator; | ||||
| 
 | ||||
| /** | ||||
|  * Часть кода класса ObjectArray, отвечающая за функции из наследуемых интерфейсов и классов. | ||||
|  * Часть кода класса ObjectArray и Dictionary, отвечающая за функции из наследуемых интерфейсов и классов. | ||||
|  * | ||||
|  * @author Александр Бабаев | ||||
|  * @package php_components_pack | ||||
|  * @version 1.0 | ||||
|  * @since 1.0 | ||||
|  */ | ||||
| trait ObjectArrayBasicTrait | ||||
| trait ArrayBasicTrait | ||||
| { | ||||
|     /** | ||||
|      * @inheritDoc | ||||
| @@ -69,7 +69,7 @@ trait ObjectArrayBasicTrait | ||||
|      */ | ||||
|     public function __isset (mixed $offset): bool | ||||
|     { | ||||
|         return isset($this->data[$offset]); | ||||
|         return isset($this->Container[$offset]); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
| @@ -77,7 +77,7 @@ trait ObjectArrayBasicTrait | ||||
|      */ | ||||
|     public function Serialize (): string | ||||
|     { | ||||
|         return serialize($this->Container); | ||||
|         return json_encode($this->Container); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
| @@ -85,6 +85,6 @@ trait ObjectArrayBasicTrait | ||||
|      */ | ||||
|     public function UnSerialize (string $serialized): void | ||||
|     { | ||||
|         $this->Container = unserialize($serialized); | ||||
|         $this->Container = json_decode($serialized, true); | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user