input('page', 1)); $perPage = intval($request->input('per_page', $request->input('perPage', DEFAULT_LIST_PER_PAGE))); $pageCount = intval($request->input('page_count', $request->input('pageCount', DEFAULT_LIST_PAGE_COUNT))); $offset = (($page - 1) * $perPage); $res = new static(); $res->page = $page; $res->perPage = $perPage; $res->pageCount = $pageCount; $res->offset = $offset; $res->field = $request->input('field'); $res->keyword = $request->input('keyword'); $res->startDate = $request->input('start_date'); $res->endDate = $request->input('end_date'); $res->sort = $request->input('sort', 1); foreach(array_merge($request->route()->parameters(), $request->all()) as $k => $v) { if(!property_exists($res, $k)) { $res->{$k} = $v; } } unset($page, $perPage, $pageCount, $offset); return $res; } public function __set($name, $value) { $this->{$name} = $value; } public function __get($name): mixed { return ($this->{$name} ?? null); } public function toResponse($request): JsonResponse { return response()->json($this); } }