ruleset = new Ruleset(strict: true); $this->ruleset->GET([ (new Rules(SearchTable::QUERY->value)) ->required() ->type(Type::STRING) ->min(2) ->max(parent::SIZE_VARCHAR) ]); $this->ruleset->validate_or_exit(); parent::__construct(); } public function main(): Response { $result = $this->db ->for(SearchTable::NAME) ->where([ SearchTable::QUERY->value => [ Operators::LIKE->value => "%{$_GET[SearchTable::QUERY->value]}%" ] ]) ->select([ SearchTable::TITLE->value, SearchTable::SUMMARY->value, SearchTable::CATEGORY->value, SearchTable::HREF->value ]); return $result->num_rows > 0 ? new Response($result->fetch_all(MYSQLI_ASSOC)) : new Response([], 404); } }