ruleset = new Ruleset(strict: true); $this->ruleset->GET([ (new Rules(self::GET_QUERY)) ->required() ->type(Type::STRING) ->min(1) ->max(parent::MYSQL_VARCHAR_MAX_LENGTH) ]); parent::__construct($this->ruleset); } private function search_work(): Response { return (new Call(Endpoints::WORK->value))->params([ WorkModel::TITLE->value => $_GET[self::GET_QUERY], WorkModel::SUMMARY->value => $_GET[self::GET_QUERY] ])->get(); } public function main(): Response { $results = [ Endpoints::WORK->value => $this->search_work()->output() ]; // Calculate the total number of results from all searched endpoints $num_results = array_sum(array_map(fn(array $result): int => count($result), array_values($results))); // Return 404 if no search results return new Response($results, $num_results > 0 ? 200 : 404); } }