2023-11-09 10:03:35 +04:00
|
|
|
<?php
|
2023-11-09 10:34:36 +04:00
|
|
|
namespace nur\sery\schema\input;
|
2023-11-09 10:03:35 +04:00
|
|
|
|
2023-11-27 22:39:35 +04:00
|
|
|
#XXX available permet de préciser qu'une valeur doit exister et être non vide
|
|
|
|
# pour être considérée. en faire un paramètre, à moins que ce soit au niveau du
|
|
|
|
# type qu'il faille le gérer?
|
2023-11-09 10:03:35 +04:00
|
|
|
/**
|
|
|
|
* Class Input: accès à une valeur
|
|
|
|
*
|
|
|
|
* cette implémentation lit depuis et écrit dans une référence
|
|
|
|
*/
|
|
|
|
class Input {
|
2023-11-27 22:39:35 +04:00
|
|
|
function __construct(&$dest=null) {
|
|
|
|
$this->dest =& $dest;
|
2023-11-09 10:03:35 +04:00
|
|
|
}
|
|
|
|
|
2023-11-27 22:39:35 +04:00
|
|
|
protected $dest;
|
2023-11-09 10:03:35 +04:00
|
|
|
|
2023-11-27 22:39:35 +04:00
|
|
|
/** tester si la valeur existe */
|
2023-11-09 10:03:35 +04:00
|
|
|
function exists($key=null): bool {
|
|
|
|
if ($key === null) return true;
|
2023-11-27 22:39:35 +04:00
|
|
|
return $this->dest !== null && array_key_exists($key, $this->dest);
|
2023-11-09 10:03:35 +04:00
|
|
|
}
|
|
|
|
|
|
|
|
function get($key=null) {
|
2023-11-27 22:39:35 +04:00
|
|
|
if ($key === null) return $this->dest;
|
|
|
|
elseif ($this->dest === null) return null;
|
|
|
|
elseif (!array_key_exists($key, $this->dest)) return null;
|
|
|
|
else return $this->dest[$key];
|
2023-11-09 10:03:35 +04:00
|
|
|
}
|
|
|
|
|
|
|
|
function set($value, $key=null): void {
|
2023-11-27 22:39:35 +04:00
|
|
|
if ($key === null) $this->dest = $value;
|
|
|
|
else $this->dest[$key] = $value;
|
2023-11-09 10:03:35 +04:00
|
|
|
}
|
|
|
|
}
|