nur-sery/src/schema/Result.php

42 lines
1.1 KiB
PHP
Raw Normal View History

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