20250424
[Д] [ObjectArray->Add] Функция добавляет объект в массив объектов, хранящийся в данном классе (аналогично добавлению элемента в массив с помощью []). [Д] [ObjectArray->AddRange] Функция добавляет массив объектов (или объекты, заданные с помощью array) в массив объектов, хранящийся в данном классе. [И] [ObjectArray->Update] Добавление с помощью foreach заменено на AddRange. [Д] [IDuplicated] Добавлен интерфейс реализации дублирования классов. [Д] [IStoredAtSQL] Добавлен интерфейс поддержки моделей и классов, реализующих хранение свойств в SQL базе данных.
This commit is contained in:
		| @@ -9,6 +9,7 @@ use goodboyalex\php_components_pack\traits\ObjectArray\ObjectArrayBasicTrait; | ||||
| use goodboyalex\php_components_pack\traits\ObjectArray\ObjectArrayConstantsTrait; | ||||
| use goodboyalex\php_components_pack\traits\ObjectArray\ObjectArrayLINQTrait; | ||||
| use goodboyalex\php_components_pack\traits\ObjectArray\ObjectArraySearchAndSortTrait; | ||||
| use goodboyalex\php_components_pack\traits\ObjectArray\ObjectArraySpecialTrait; | ||||
| use IteratorAggregate; | ||||
|  | ||||
| /** | ||||
| @@ -38,6 +39,9 @@ final class ObjectArray implements ArrayAccess, IteratorAggregate, Countable, IS | ||||
|     // LINQ-подобные методы | ||||
|     use ObjectArrayLINQTrait; | ||||
|  | ||||
|     // Специальные методы | ||||
|     use ObjectArraySpecialTrait; | ||||
|  | ||||
|     /** | ||||
|      * Конструктор класса. | ||||
|      * | ||||
| @@ -47,40 +51,4 @@ final class ObjectArray implements ArrayAccess, IteratorAggregate, Countable, IS | ||||
|     { | ||||
|         $this->Container = $array; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Возвращает массив объектов, хранящихся в данном классе. | ||||
|      * | ||||
|      * @return array Массив объектов, хранящихся в данном классе. | ||||
|      */ | ||||
|     public function ToArray (): array | ||||
|     { | ||||
|         return $this->Container; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Очищает массив объектов, хранящийся в данном классе. | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|     public function Clear (): void | ||||
|     { | ||||
|         // Очищаем массив | ||||
|         unset($this->Container); | ||||
|  | ||||
|         // Создаем новый массив | ||||
|         $this->Container = []; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Объединяет массив объектов, хранящийся в данном классе, с массивом объектов, переданным в качестве параметра. | ||||
|      * | ||||
|      * @param array $objects Массив объектов, который будет объединен с массивом объектов, хранящимся в данном классе. | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|     public function Merge (array $objects): void | ||||
|     { | ||||
|         $this->Container = array_merge($this->Container, $objects); | ||||
|     } | ||||
| } | ||||
							
								
								
									
										21
									
								
								sources/interfaces/IDuplicated.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								sources/interfaces/IDuplicated.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | ||||
| <?php | ||||
|  | ||||
| namespace goodboyalex\php_components_pack\interfaces; | ||||
|  | ||||
| /** | ||||
|  * Интерфейс реализации дублирования классов. | ||||
|  * | ||||
|  * @author Александр Бабаев | ||||
|  * @package freecms | ||||
|  * @version 0.1 | ||||
|  * @since 0.1 | ||||
|  */ | ||||
| interface IDuplicated | ||||
| { | ||||
|     /** | ||||
|      * Дублирование класса. | ||||
|      * | ||||
|      * @return object Класс-дублёр. | ||||
|      */ | ||||
|     public function Duplicate (): object; | ||||
| } | ||||
							
								
								
									
										32
									
								
								sources/interfaces/IStoredAtSQL.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								sources/interfaces/IStoredAtSQL.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| <?php | ||||
|  | ||||
| namespace goodboyalex\php_components_pack\interfaces; | ||||
|  | ||||
| /** | ||||
|  * Интерфейс поддержки моделей и классов, реализующих хранение свойств в SQL базе данных. | ||||
|  * | ||||
|  * @author Александр Бабаев | ||||
|  * @package freecms | ||||
|  * @version 0.1 | ||||
|  * @since 0.1 | ||||
|  */ | ||||
| interface IStoredAtSQL | ||||
| { | ||||
|     /** | ||||
|      * Вывод параметров добавления/обновления данных в базу данных. | ||||
|      * | ||||
|      * @param bool $withId Нужно ли добавлять Id в массив | ||||
|      * | ||||
|      * @return array Массив параметров | ||||
|      */ | ||||
|     public function ToSQL (bool $withId = true): array; | ||||
|  | ||||
|     /** | ||||
|      * Преобразование данных из базы данных в модель, класс. | ||||
|      * | ||||
|      * @param array $sqlData Данные из базы данных | ||||
|      * | ||||
|      * @return self Класс модели с заполненными данными из базы данных | ||||
|      */ | ||||
|     public function FromSQL (array $sqlData): self; | ||||
| } | ||||
| @@ -196,8 +196,7 @@ trait ObjectArrayLINQTrait | ||||
|         $result = $this->Delete($wherePredicate); | ||||
|  | ||||
|         // Добавляю новые элементы | ||||
|         foreach ($setItems as $item) | ||||
|             $this->Container[] = $item; | ||||
|         $this->AddRange($setItems); | ||||
|  | ||||
|         // Возвращаю результат | ||||
|         return $result; | ||||
|   | ||||
							
								
								
									
										81
									
								
								sources/traits/ObjectArray/ObjectArraySpecialTrait.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										81
									
								
								sources/traits/ObjectArray/ObjectArraySpecialTrait.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,81 @@ | ||||
| <?php | ||||
|  | ||||
| namespace goodboyalex\php_components_pack\traits\ObjectArray; | ||||
|  | ||||
| use goodboyalex\php_components_pack\classes\ObjectArray; | ||||
|  | ||||
| /** | ||||
|  * Часть кода класса ObjectArray, отвечающая за специальные функции. | ||||
|  * | ||||
|  * @author Александр Бабаев | ||||
|  * @package php_components_pack | ||||
|  * @version 1.0 | ||||
|  * @since 1.0 | ||||
|  */ | ||||
| trait ObjectArraySpecialTrait | ||||
| { | ||||
|     /** | ||||
|      * Очищает массив объектов, хранящийся в данном классе. | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|     public function Clear (): void | ||||
|     { | ||||
|         // Очищаем массив | ||||
|         unset($this->Container); | ||||
|  | ||||
|         // Создаем новый массив | ||||
|         $this->Container = []; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Добавляет объект в массив объектов, хранящийся в данном классе (аналогично добавлению элемента в массив с | ||||
|      * помощью []). | ||||
|      * | ||||
|      * @param mixed $object Объект, который будет добавлен в массив объектов, хранящийся в данном классе. | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|     public function Add (mixed $object): void | ||||
|     { | ||||
|         $this->Container[] = $object; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Добавляет массив объектов (или объекты, заданные с помощью array) в массив объектов, хранящийся в данном классе. | ||||
|      * | ||||
|      * @param ObjectArray|array $objects Массив объектов, которые будут добавлены в массив объектов. | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|     public function AddRange (ObjectArray|array $objects): void | ||||
|     { | ||||
|         // Если передан массив, то не изменяем его, а если передан объект класса ObjectArray, то конвертируем его в массив объектов | ||||
|         $objectsToAdd = is_array($objects) ? $objects : $objects->ToArray(); | ||||
|  | ||||
|         // Добавляем массив объектов | ||||
|         $this->Merge($objectsToAdd); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Возвращает массив объектов, хранящихся в данном классе. | ||||
|      * | ||||
|      * @return array Массив объектов, хранящихся в данном классе. | ||||
|      */ | ||||
|     public function ToArray (): array | ||||
|     { | ||||
|         return $this->Container; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Объединяет массив объектов, хранящийся в данном классе, с массивом объектов, переданным в качестве параметра. | ||||
|      * | ||||
|      * @param array $objects Массив объектов, который будет объединен с массивом объектов, хранящимся в данном классе. | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|     public function Merge (array $objects): void | ||||
|     { | ||||
|         $this->Container = array_merge($this->Container, $objects); | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user