/
devron
/
ecomm-app
Обзор
Документация
Войти
/
devron
/
ecomm-app
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
app/Filters/FilterBuilder.php
58 строк
1 KB
Romulus
first init
17 апр 2024, 15:18
17 апр 2024, 15:18
6886bc2
Код
Авторство
О чём код?
<?php namespace App\Filters; use Illuminate\Support\Str; class FilterBuilder { /** * @var */ protected $query; /** * @var */ protected $filters; /** * @var */ protected $namespace; /** * @param $query * @param $filters * @param $namespace */ public function __construct($query, $filters, $namespace) { $this->query = $query; $this->filters = $filters; $this->namespace = $namespace; } /** * @return mixed */ public function apply(): mixed { foreach ($this->filters as $name => $value) { $normalizedName = Str::ucfirst(Str::camel($name)); $class = $this->namespace . "\\Filters\\{$normalizedName}"; if (!class_exists($class)) { continue; } if (Str::length($value)) { (new $class($this->query))->handle($value); } else { (new $class($this->query))->handle(); } } return $this->query; } }