68 lines
2.3 KiB
PHP
68 lines
2.3 KiB
PHP
|
<?php
|
||
|
namespace nur;
|
||
|
|
||
|
use nur\b\values\Mparams;
|
||
|
|
||
|
/**
|
||
|
* Class F: gestion unifiée des paramètres POST + GET
|
||
|
*/
|
||
|
class F extends Mparams {
|
||
|
/** tester si le paramètre $name existe dans $_POST ou $_GET */
|
||
|
static final function has($name): bool {
|
||
|
if ($name === null || $name === false) return false;
|
||
|
elseif (array_key_exists($name, $_POST)) return true;
|
||
|
elseif (array_key_exists($name, $_GET)) return true;
|
||
|
else return false;
|
||
|
}
|
||
|
|
||
|
/** obtenir le paramètre $name en cherchant dans $_POST puis $_GET */
|
||
|
static final function get($name, $default=null, bool $trim=false) {
|
||
|
if ($name === null || $name === false) $value = $default;
|
||
|
elseif (array_key_exists($name, $_POST)) $value = $_POST[$name];
|
||
|
elseif (array_key_exists($name, $_GET)) $value = $_GET[$name];
|
||
|
else $value = $default;
|
||
|
if ($trim) $value = str::trim($value);
|
||
|
return $value;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* modifier le paramètre.
|
||
|
*
|
||
|
* - s'il provenait de $_POST, modifier $_POST
|
||
|
* - s'il provenait de $_GET, modifier $_GET
|
||
|
* - sinon modifier $_POST
|
||
|
*/
|
||
|
static final function set(string $name, ?string $value): void {
|
||
|
if (array_key_exists($name, $_POST)) $_POST[$name] = $value;
|
||
|
elseif (array_key_exists($name, $_GET)) $_GET[$name] = $value;
|
||
|
else $_POST[$name] = $value;
|
||
|
}
|
||
|
|
||
|
/** obtenir la liste des clés définies dans les paramètres */
|
||
|
protected static final function get_names(): array {
|
||
|
return array_keys(array_merge(
|
||
|
array_fill_keys(array_keys($_POST), true),
|
||
|
array_fill_keys(array_keys($_GET), true),
|
||
|
));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* retourner une liste des paramètres qui ont été passés, en les sélectionnant
|
||
|
* selon le contenu de $includes et $excludes. ensuite, fusionner le tableau
|
||
|
* $merge s'il est spécifié
|
||
|
*
|
||
|
* pour être sélectionné, un paramètre ne doit pas être dans $excludes, et si
|
||
|
* $includes n'est pas null, doit être dans $includes
|
||
|
*/
|
||
|
static final function select(?array $includes=null, ?array $excludes=null, ?array $merges=null): array {
|
||
|
$params = [];
|
||
|
foreach (self::get_names() as $name) {
|
||
|
if ($excludes !== null && in_array($name, $excludes)) continue;
|
||
|
if ($includes !== null && !in_array($name, $includes)) continue;
|
||
|
$params[$name] = self::get($name);
|
||
|
}
|
||
|
if ($merges !== null) $params = array_merge($params, $merges);
|
||
|
return $params;
|
||
|
}
|
||
|
}
|