Loading src/Search/Criteria.php +4 −4 Original line number Diff line number Diff line Loading @@ -2,23 +2,23 @@ namespace IQDEV\Search; use IQDEV\Search\Filter\FilterCollection; use IQDEV\Search\Filter\FilterGroupCollection; use IQDEV\Search\Order\OrderCollection; final class Criteria { private FilterCollection $filters; private FilterGroupCollection $filters; private OrderCollection $sorting; private Pagination $pagination; public function __construct() { $this->filters = new FilterCollection(); $this->filters = new FilterGroupCollection(); $this->sorting = new OrderCollection(); $this->pagination = new Pagination(); } public function filters(): FilterCollection public function filters(): FilterGroupCollection { return $this->filters; } Loading src/Search/Filter/FilterCollection.php +22 −0 Original line number Diff line number Diff line Loading @@ -6,6 +6,14 @@ use Ramsey\Collection\AbstractCollection; class FilterCollection extends AbstractCollection { /** @var LogicOperator Тип логической операции для коллекции */ protected LogicOperator $type; public function __construct(array $data = []) { parent::__construct($data); $this->type = new LogicOperator(LogicOperator::AND); } /** * @inheritDoc Loading @@ -14,4 +22,18 @@ class FilterCollection extends AbstractCollection { return Filter::class; } /** * Установка типа логической операции * * @param LogicOperator $type * * @return $this */ public function setLogicalType(LogicOperator $type): self { $this->type = $type; return $this; } } src/Search/Filter/FilterGroupCollection.php 0 → 100644 +39 −0 Original line number Diff line number Diff line <?php namespace IQDEV\Search\Filter; use Ramsey\Collection\AbstractCollection; class FilterGroupCollection extends AbstractCollection { /** @var LogicOperator Тип логической операции для коллекции */ protected LogicOperator $type; public function __construct(array $data = []) { parent::__construct($data); $this->type = new LogicOperator(LogicOperator::AND); } /** * @inheritDoc */ public function getType(): string { return FilterCollection::class; } /** * Установка типа логической операции * * @param LogicOperator $type * * @return $this */ public function setLogicalType(LogicOperator $type): self { $this->type = $type; return $this; } } src/Search/Filter/LogicOperator.php 0 → 100644 +35 −0 Original line number Diff line number Diff line <?php namespace IQDEV\Search\Filter; final class LogicOperator { public const AND = 'AND'; public const OR = 'OR'; private string $operator; public function __construct(string $operator) { if (!in_array($operator, self::toArray(), true)) { throw new \InvalidArgumentException(sprintf('invalid operator %s', $operator)); } $this->operator = $operator; } public function value(): string { return $this->operator; } /** * @return string[] */ public static function toArray(): array { return [ self::AND, self::OR ]; } } Loading
src/Search/Criteria.php +4 −4 Original line number Diff line number Diff line Loading @@ -2,23 +2,23 @@ namespace IQDEV\Search; use IQDEV\Search\Filter\FilterCollection; use IQDEV\Search\Filter\FilterGroupCollection; use IQDEV\Search\Order\OrderCollection; final class Criteria { private FilterCollection $filters; private FilterGroupCollection $filters; private OrderCollection $sorting; private Pagination $pagination; public function __construct() { $this->filters = new FilterCollection(); $this->filters = new FilterGroupCollection(); $this->sorting = new OrderCollection(); $this->pagination = new Pagination(); } public function filters(): FilterCollection public function filters(): FilterGroupCollection { return $this->filters; } Loading
src/Search/Filter/FilterCollection.php +22 −0 Original line number Diff line number Diff line Loading @@ -6,6 +6,14 @@ use Ramsey\Collection\AbstractCollection; class FilterCollection extends AbstractCollection { /** @var LogicOperator Тип логической операции для коллекции */ protected LogicOperator $type; public function __construct(array $data = []) { parent::__construct($data); $this->type = new LogicOperator(LogicOperator::AND); } /** * @inheritDoc Loading @@ -14,4 +22,18 @@ class FilterCollection extends AbstractCollection { return Filter::class; } /** * Установка типа логической операции * * @param LogicOperator $type * * @return $this */ public function setLogicalType(LogicOperator $type): self { $this->type = $type; return $this; } }
src/Search/Filter/FilterGroupCollection.php 0 → 100644 +39 −0 Original line number Diff line number Diff line <?php namespace IQDEV\Search\Filter; use Ramsey\Collection\AbstractCollection; class FilterGroupCollection extends AbstractCollection { /** @var LogicOperator Тип логической операции для коллекции */ protected LogicOperator $type; public function __construct(array $data = []) { parent::__construct($data); $this->type = new LogicOperator(LogicOperator::AND); } /** * @inheritDoc */ public function getType(): string { return FilterCollection::class; } /** * Установка типа логической операции * * @param LogicOperator $type * * @return $this */ public function setLogicalType(LogicOperator $type): self { $this->type = $type; return $this; } }
src/Search/Filter/LogicOperator.php 0 → 100644 +35 −0 Original line number Diff line number Diff line <?php namespace IQDEV\Search\Filter; final class LogicOperator { public const AND = 'AND'; public const OR = 'OR'; private string $operator; public function __construct(string $operator) { if (!in_array($operator, self::toArray(), true)) { throw new \InvalidArgumentException(sprintf('invalid operator %s', $operator)); } $this->operator = $operator; } public function value(): string { return $this->operator; } /** * @return string[] */ public static function toArray(): array { return [ self::AND, self::OR ]; } }