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