<?php namespace IQDEV\ElasticSearch; use IQDEV\ElasticSearch\Request\Filter\Collection\FilterCollection; use IQDEV\ElasticSearch\Request\Order\OrderCollection; use IQDEV\ElasticSearch\Request\Search\SearchCollection; final class Criteria { private SearchCollection $search; private FilterCollection $filters; private OrderCollection $sorting; private Pagination $pagination; public function __construct() { $this->search = new SearchCollection(); $this->filters = new FilterCollection(); $this->sorting = new OrderCollection(); $this->pagination = new Pagination(); } public function getSearch(): SearchCollection { return $this->search; } public function getFilters(): FilterCollection { return $this->filters; } public function getSorting(): OrderCollection { return $this->sorting; } public function getPagination(): Pagination { return $this->pagination; } public function __clone(): void { $this->search = clone $this->search; $this->filters = clone $this->filters; $this->sorting = clone $this->sorting; $this->pagination = clone $this->pagination; } }