<?php 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\ObjectArray\ObjectArrayConstantsTrait; use goodboyalex\php_components_pack\traits\ObjectArray\ObjectArrayLINQTrait; use goodboyalex\php_components_pack\traits\ObjectArray\ObjectArraySearchAndSortTrait; use IteratorAggregate; /** * Класс, описывающий массив объектов. * * @author Александр Бабаев * @package php_components_pack * @version 1.0 * @since 1.0 */ final class ObjectArray implements ArrayAccess, IteratorAggregate, Countable, ISerializable { /** * @var array $Container Массив объектов, хранящихся в данном классе. */ private array $Container; // Реализация наследуемых интерфейсов и классов use ObjectArrayBasicTrait; // Константы use ObjectArrayConstantsTrait; // Поиск элемента use ObjectArraySearchAndSortTrait; // LINQ-подобные методы use ObjectArrayLINQTrait; /** * Конструктор класса. * * @param array $array Массив объектов, который будет храниться в данном классе. */ public function __construct (array $array = []) { $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); } }