2023-11-09 10:03:35 +04:00
|
|
|
<?php
|
2023-11-27 22:39:35 +04:00
|
|
|
namespace nur\sery\schema;
|
2023-11-09 10:03:35 +04:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Class Result: résultat de l'analyse ou de la normalisation d'une valeur
|
|
|
|
*
|
|
|
|
* @property-read bool $valid
|
|
|
|
* @property-read string|int|null $key si la valeur est dans un tableau, clé de
|
|
|
|
* la valeur dans le tableau
|
|
|
|
* @property-read string|null $orig valeur originale avant analyse
|
|
|
|
* @property-read string|null $message message d'erreur si la valeur n'est pas
|
|
|
|
* valide
|
|
|
|
*/
|
|
|
|
class Result {
|
|
|
|
const KEYS = ["valid", "key", "orig", "message"];
|
|
|
|
|
|
|
|
function __construct(?array $result=null) {
|
|
|
|
if ($result === null) $result = ["valid" => false];
|
|
|
|
foreach (static::KEYS as $key) {
|
|
|
|
if (!array_key_exists($key, $result)) $result[$key] = null;
|
|
|
|
}
|
|
|
|
#XXX interpoler [message] avec les clés de $result
|
|
|
|
$this->result = $result;
|
|
|
|
}
|
|
|
|
|
2023-11-25 10:04:24 +04:00
|
|
|
/** @var array */
|
2023-11-09 10:03:35 +04:00
|
|
|
protected $result;
|
|
|
|
|
2023-11-28 00:20:42 +04:00
|
|
|
/**
|
|
|
|
* Obtenir la liste des clés valides pour les valeurs accessibles via cet
|
|
|
|
* objet
|
|
|
|
*/
|
|
|
|
abstract function getKeys(): array;
|
|
|
|
|
|
|
|
/** obtenir un objet pour gérer la valeur spécifiée */
|
|
|
|
abstract function getResult($key=null): Result;
|
|
|
|
|
2023-11-09 10:03:35 +04:00
|
|
|
function __get($name) {
|
|
|
|
return $this->result[$name];
|
|
|
|
}
|
|
|
|
}
|