[null, null, "nom du paramètre"], "default" => [null, false, "valeur par défaut du paramètre"], ]; private static $param2_name_md; private static function param2_name_md(): Metadata { return md_utils::ensure_md(self::$param2_name_md, self::PARAM2_NAME_SCHEMA); } /** * Obtenir des paramètres de formulaire, selon les règles de get_param2() * * chaque élément de $names peut être une chaine $name ou un array avec la * structure [$name, $default=null] */ static final function get_params2(...$names): array { $params = []; foreach ($names as $nd) { [$name, $default] = md::get_values($nd, self::PARAM2_NAME_SCHEMA); $params[$name] = self::get_param2($name, $default); } return $params; } /** * Initialiser un objet avec des paramètres de formulaire. * * Les règles sont les mêmes que pour get_params2(), mais au lieu de retourner * le résultat, initialiser les clés (si c'est un tableau) ou les propriétés * (si c'est un objet) du même nom dans l'objet destination. */ static final function set_params2(&$obj, ...$names): void { $params = self::get_params2(...$names); valx::set_values($obj, $params); } ## /** * Obtenir les paramètres avec get_params2() et corriger les valeurs avec * A::verifix_values() */ static final function get_verifixed_params2($verifixers): array { $names = array_keys($verifixers); $params = self::get_params2(...$names); A::verifix_values($params, $verifixers); return $params; } /** * Obtenir les paramètres avec get_params2(), corriger les valeurs avec * A::verifix_values(), puis initialiser l'objet comme avec set_params2() */ static final function set_verifixed_params2(&$obj, $verifixers): void { $names = array_keys($verifixers); $params = self::get_params2(...$names); A::verifix_values($params, $verifixers); valx::set_values($obj, $params); } ## const PARAM_NAME_SCHEMA = [ "name" => [null, null, "nom du paramètre"], "default" => [null, null, "valeur par défaut du paramètre"], ]; private static $param_name_md; private static function param_name_md(): Metadata { return md_utils::ensure_md(self::$param_name_md, self::PARAM_NAME_SCHEMA); } /** * Obtenir des paramètres de formulaire, selon les règles de get_param() */ static final function get_params(...$names): array { $param_name_md = self::param_name_md(); $params = []; foreach ($names as $nd) { $param_name_md->ensureSchema($nd); ["name" => $name, "default" => $default] = $param_name_md->getValues($nd); $params[$name] = self::get_param($name, $default); } return $params; } /** * Initialiser un objet avec des paramètres de formulaire. * * Les règles sont les mêmes que pour get_params(), mais au lieu de retourner * le résultat, initialiser les clés (si c'est un tableau) ou les propriétés * (si c'est un objet) du même nom dans l'objet destination. */ static final function set_params(&$obj, ...$names): void { $params = self::get_params(...$names); valx::set_values($obj, $params); } ## /** * Obtenir les paramètres avec get_params() et corriger les valeurs avec * A::verifix_values() */ static final function get_verifixed_params($verifixers): array { $names = array_keys($verifixers); $params = self::get_params(...$names); A::verifix_values($params, $verifixers); return $params; } /** * Obtenir les paramètres avec get_params(), corriger les valeurs avec * A::verifix_values(), puis initialiser l'objet comme avec set_params() */ static final function set_verifixed_params(&$obj, $verifixers): void { $names = array_keys($verifixers); $params = self::get_params(...$names); A::verifix_values($params, $verifixers); valx::set_values($obj, $params); } ## /** * Obtenir le paramètre spécifié. * * Si le paramètre n'est pas fourni, prendre la variable de session du même * nom si elle existe. Si la valeur est non nulle, mettre à jour la session * avec la valeur du paramètre. */ static final function sget($name, $default=null, $session_key=null, $trim=false) { if ($session_key === null) $session_key = $name; if (static::has($name)) { $value = static::get($name, $default, $trim); if ($trim && base::f($value)) $value = null; } else { $value = session::get($session_key, $default); } if (base::nz($value)) session::set($session_key, $value); return $value; } ## /** * comme get_param2() avec les spécificités de sget() * * - si le paramètre n'est pas fourni, prendre la variable de session du même * nom si elle existe. * - si le paramètre est null, supprimer la variable de session * - sinon mettre à jour la session avec la valeur du paramètre. */ static final function sget_param2($name, $default=false, $session_key=null) { if ($session_key === null) $session_key = $name; $value = self::get_param2($name, false); if ($value === false) $value = session::get($session_key, $default); if ($value === null) session::del($session_key); elseif ($value !== false) session::set($session_key, $value); return $value; } const SPARAM2_NAME_SCHEMA = [ "name" => [null, null, "nom du paramètre"], "default" => [null, false, "valeur par défaut du paramètre"], "session_key" => [null, null, "nom de la clé dans la session"], ]; /** * Obtenir des paramètres de formulaire, selon les règles de sget_param2() * * chaque élément de $names peut avoir la structure * [$name, $default=false, $session_key=null] */ static final function sget_params2(...$names): array { $params = []; foreach ($names as $nds) { [$name, $default, $session_key] = md::get_values($nds, self::SPARAM2_NAME_SCHEMA); $params[$name] = self::sget_param2($name, $default, $session_key); } return $params; } /** comme set_params2() avec les spécificités de sget() */ static final function sset_params2(&$obj, ...$names): void { $params = self::sget_params2(...$names); valx::set_values($obj, $params); } ## /** * comme get_param() avec les spécificités de sget() * * Si le paramètre est vide ou inexistant, prendre la variable de session du * même nom si elle existe. Si la valeur est non nulle, mettre à jour la * session avec la valeur du paramètre. */ static final function sget_param($name, $default=null, $session_key=null) { if ($session_key === null) $session_key = $name; $value = self::get_param($name, null); if ($value === null) $value = session::get($session_key, $default); if (base::nz($value)) session::set($session_key, $value); return $value; } const SPARAM_NAME_SCHEMA = [ "name" => [null, null, "nom du paramètre"], "default" => [null, null, "valeur par défaut du paramètre"], "session_key" => [null, null, "nom de la clé dans la session"], ]; /** * Obtenir des paramètres de formulaire, selon les règles de sget_param() * * chaque élément de $names peut avoir la structure * [$name, $default=null, $session_key=null] */ static final function sget_params(...$names): array { $params = []; foreach ($names as $nds) { [$name, $default, $session_key] = md::get_values($nds, self::SPARAM_NAME_SCHEMA); $params[$name] = self::sget_param($name, $default, $session_key); } return $params; } /** comme set_params() avec les spécificités de sget() */ static final function sset_params(&$obj, ...$names): void { $params = self::sget_params(...$names); valx::set_values($obj, $params); } ## /** Supprimer les clés spécifiées dans l'objet destination ET dans la session */ static final function sclear(&$obj, ...$names): void { if (is_array($obj) || $obj === null) { if ($obj === null) $obj = []; foreach ($names as $name) { $obj[$name] = null; session::del($name); } } elseif ($obj instanceof ArrayAccess) { foreach ($names as $name) { $obj[$name] = null; session::del($name); } } else { foreach ($names as $name) { oprop::set($obj, $name, null); session::del($name); } } } }