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;
 | 
						|
  }
 | 
						|
}
 |