86 lines
2.8 KiB
PHP
86 lines
2.8 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\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);
|
||
}
|
||
} |