> $request */ public static function from_request( WP_REST_Request $request, int $default_per_page ): self { $last_page = intdiv( PHP_INT_MAX, self::MAXIMUM_PER_PAGE ); return new self( self::bounded( $request->get_param( 'page' ), self::FIRST_PAGE, $last_page ), self::bounded( $request->get_param( 'per_page' ), $default_per_page, self::MAXIMUM_PER_PAGE ) ); } public function offset(): int { return ( $this->page - 1 ) * $this->per_page; } private static function bounded( mixed $parameter, int $fallback, int $maximum ): int { $number = is_numeric( $parameter ) ? (float) $parameter : $fallback; return (int) max( self::FIRST_PAGE, min( $maximum, $number ) ); } }