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\FilterGroupCollection; use IQDEV\Search\Filter\FilterCollection; use IQDEV\Search\Order\OrderCollection; final class Criteria { private FilterGroupCollection $filters; private FilterCollection $filters; private OrderCollection $sorting; private Pagination $pagination; public function __construct() { $this->filters = new FilterGroupCollection(); $this->filters = new FilterCollection(); $this->sorting = new OrderCollection(); $this->pagination = new Pagination(); } public function filters(): FilterGroupCollection public function filters(): FilterCollection { return $this->filters; } Loading src/Search/Filter/FilterCollection.php +7 −1 Original line number Diff line number Diff line Loading @@ -4,11 +4,17 @@ namespace IQDEV\Search\Filter; use Ramsey\Collection\AbstractCollection; /** * @method self add(FilterGroupCollection $item) */ class FilterCollection extends AbstractCollection { /** @var LogicOperator Тип логической операции для коллекции */ protected LogicOperator $type; /** * @param FilterGroupCollection[] $data */ public function __construct(array $data = []) { parent::__construct($data); Loading @@ -20,7 +26,7 @@ class FilterCollection extends AbstractCollection */ public function getType(): string { return Filter::class; return FilterGroupCollection::class; } /** Loading src/Search/Filter/FilterGroupCollection.php +8 −2 Original line number Diff line number Diff line Loading @@ -4,6 +4,9 @@ namespace IQDEV\Search\Filter; use Ramsey\Collection\AbstractCollection; /** * @method bool add(Filter $item) */ class FilterGroupCollection extends AbstractCollection { /** @var LogicOperator Тип логической операции для коллекции */ Loading @@ -11,11 +14,14 @@ class FilterGroupCollection extends AbstractCollection /** @var FilterType Тип фильтра для коллекции */ protected FilterType $filterType; /** * @param Filter[] $data */ public function __construct(array $data = []) { parent::__construct($data); $this->type = new LogicOperator(LogicOperator::AND); $this->filterType = new FilterType(FilterType::FILTER); $this->filterType = FilterType::post(); } /** Loading @@ -23,7 +29,7 @@ class FilterGroupCollection extends AbstractCollection */ public function getType(): string { return FilterCollection::class; return Filter::class; } /** Loading src/Search/Filter/FilterType.php +14 −3 Original line number Diff line number Diff line Loading @@ -2,12 +2,16 @@ namespace IQDEV\Search\Filter; /** * @method static self query() * @method static self post() */ final class FilterType { /** * Тип пост фильтрации по свойствам * Тип пост фильтрации */ public const FILTER = 'filter'; public const POST = 'post'; /** * Тип полной фильтрации */ Loading @@ -34,8 +38,15 @@ final class FilterType public static function toArray(): array { return [ self::FILTER, self::POST, self::QUERY ]; } public static function __callStatic($method, $arguments) { if (in_array($method, self::toArray())) { return new self($method); } } } src/Search/Filter/LogicOperator.php +12 −0 Original line number Diff line number Diff line Loading @@ -2,6 +2,10 @@ namespace IQDEV\Search\Filter; /** * @method static self and() * @method static self or() */ final class LogicOperator { public const AND = 'AND'; Loading Loading @@ -32,4 +36,12 @@ final class LogicOperator self::OR ]; } public static function __callStatic($method, $arguments) { $method = strtoupper($method); if (in_array($method, self::toArray())) { return new self($method); } } } 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\FilterGroupCollection; use IQDEV\Search\Filter\FilterCollection; use IQDEV\Search\Order\OrderCollection; final class Criteria { private FilterGroupCollection $filters; private FilterCollection $filters; private OrderCollection $sorting; private Pagination $pagination; public function __construct() { $this->filters = new FilterGroupCollection(); $this->filters = new FilterCollection(); $this->sorting = new OrderCollection(); $this->pagination = new Pagination(); } public function filters(): FilterGroupCollection public function filters(): FilterCollection { return $this->filters; } Loading
src/Search/Filter/FilterCollection.php +7 −1 Original line number Diff line number Diff line Loading @@ -4,11 +4,17 @@ namespace IQDEV\Search\Filter; use Ramsey\Collection\AbstractCollection; /** * @method self add(FilterGroupCollection $item) */ class FilterCollection extends AbstractCollection { /** @var LogicOperator Тип логической операции для коллекции */ protected LogicOperator $type; /** * @param FilterGroupCollection[] $data */ public function __construct(array $data = []) { parent::__construct($data); Loading @@ -20,7 +26,7 @@ class FilterCollection extends AbstractCollection */ public function getType(): string { return Filter::class; return FilterGroupCollection::class; } /** Loading
src/Search/Filter/FilterGroupCollection.php +8 −2 Original line number Diff line number Diff line Loading @@ -4,6 +4,9 @@ namespace IQDEV\Search\Filter; use Ramsey\Collection\AbstractCollection; /** * @method bool add(Filter $item) */ class FilterGroupCollection extends AbstractCollection { /** @var LogicOperator Тип логической операции для коллекции */ Loading @@ -11,11 +14,14 @@ class FilterGroupCollection extends AbstractCollection /** @var FilterType Тип фильтра для коллекции */ protected FilterType $filterType; /** * @param Filter[] $data */ public function __construct(array $data = []) { parent::__construct($data); $this->type = new LogicOperator(LogicOperator::AND); $this->filterType = new FilterType(FilterType::FILTER); $this->filterType = FilterType::post(); } /** Loading @@ -23,7 +29,7 @@ class FilterGroupCollection extends AbstractCollection */ public function getType(): string { return FilterCollection::class; return Filter::class; } /** Loading
src/Search/Filter/FilterType.php +14 −3 Original line number Diff line number Diff line Loading @@ -2,12 +2,16 @@ namespace IQDEV\Search\Filter; /** * @method static self query() * @method static self post() */ final class FilterType { /** * Тип пост фильтрации по свойствам * Тип пост фильтрации */ public const FILTER = 'filter'; public const POST = 'post'; /** * Тип полной фильтрации */ Loading @@ -34,8 +38,15 @@ final class FilterType public static function toArray(): array { return [ self::FILTER, self::POST, self::QUERY ]; } public static function __callStatic($method, $arguments) { if (in_array($method, self::toArray())) { return new self($method); } } }
src/Search/Filter/LogicOperator.php +12 −0 Original line number Diff line number Diff line Loading @@ -2,6 +2,10 @@ namespace IQDEV\Search\Filter; /** * @method static self and() * @method static self or() */ final class LogicOperator { public const AND = 'AND'; Loading Loading @@ -32,4 +36,12 @@ final class LogicOperator self::OR ]; } public static function __callStatic($method, $arguments) { $method = strtoupper($method); if (in_array($method, self::toArray())) { return new self($method); } } }