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 +1 −1 Original line number Diff line number Diff line Loading @@ -20,7 +20,7 @@ class FilterCollection extends AbstractCollection */ public function getType(): string { return Filter::class; return FilterGroupCollection::class; } /** Loading src/Search/Filter/FilterGroupCollection.php +2 −2 Original line number Diff line number Diff line Loading @@ -15,7 +15,7 @@ class FilterGroupCollection extends AbstractCollection { parent::__construct($data); $this->type = new LogicOperator(LogicOperator::AND); $this->filterType = new FilterType(FilterType::FILTER); $this->filterType = FilterType::post(); } /** Loading @@ -23,7 +23,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 +1 −1 Original line number Diff line number Diff line Loading @@ -20,7 +20,7 @@ class FilterCollection extends AbstractCollection */ public function getType(): string { return Filter::class; return FilterGroupCollection::class; } /** Loading
src/Search/Filter/FilterGroupCollection.php +2 −2 Original line number Diff line number Diff line Loading @@ -15,7 +15,7 @@ class FilterGroupCollection extends AbstractCollection { parent::__construct($data); $this->type = new LogicOperator(LogicOperator::AND); $this->filterType = new FilterType(FilterType::FILTER); $this->filterType = FilterType::post(); } /** Loading @@ -23,7 +23,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); } } }