<?php class UOJRequest { const GET = 'get'; const POST = 'post'; public static function get($name, $val = null, $default = null) { if (!isset($_GET[$name])) { return $default; } if ($val !== null && !$val($_GET[$name])) { return $default; } return $_GET[$name]; } public static function post($name, $val = null, $default = null) { if (!isset($_POST[$name])) { return $default; } if ($val !== null && !$val($_POST[$name])) { return $default; } return $_POST[$name]; } public static function data(string $method, string $name, callable $val = null, $default = null) { if ($method == self::GET) { return self::get($name, $val, $default); } elseif ($method == self::POST) { return self::post($name, $val, $default); } else { return null; } } /** * * no such field: false * invalid user: null * valid user: array * * @return array|null|false */ public static function user(string $method, string $key) { $username = self::data($method, $key); if ($username === null) { return false; } return UOJUser::query($username); } public static function uint(string $method, string $key) { $val = self::data($method, $key); if ($val === null) { return false; } return validateUInt($val) ? (int)$val : null; } public static function option(string $method, string $key, array $options) { $str = self::data($method, $key); if ($str === null || !in_array($str, $options, true)) { return false; } return $str; } }