2023-11-27 22:39:35 +04:00
|
|
|
<?php
|
|
|
|
namespace nur\sery\schema;
|
|
|
|
|
2023-11-28 00:20:42 +04:00
|
|
|
use ArrayAccess;
|
|
|
|
use IteratorAggregate;
|
2023-11-27 22:39:35 +04:00
|
|
|
use nur\sery\schema\types\IType;
|
|
|
|
|
2023-11-28 00:20:42 +04:00
|
|
|
abstract class Value implements ArrayAccess, IteratorAggregate {
|
|
|
|
/** spécifier la valeur destination gérée par cet objet */
|
|
|
|
abstract function reset(&$dest, $destKey=null, bool $verifix=true): self;
|
2023-11-27 22:39:35 +04:00
|
|
|
|
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;
|
2023-11-27 22:39:35 +04:00
|
|
|
|
2023-11-28 00:20:42 +04:00
|
|
|
/** obtenir un objet pour gérer la valeur spécifiée */
|
|
|
|
abstract function getValue($key=null): Value;
|
|
|
|
|
|
|
|
function getIterator() {
|
|
|
|
foreach ($this->getKeys() as $key) {
|
|
|
|
yield $key => $this->getValue($key);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/** retourner le type associé à la valeur */
|
2023-11-27 22:39:35 +04:00
|
|
|
abstract function getType(): IType;
|
|
|
|
|
|
|
|
/** retourner true si la valeur existe */
|
|
|
|
abstract function exists(): bool;
|
|
|
|
|
2023-11-28 00:20:42 +04:00
|
|
|
/** supprimer la valeur */
|
|
|
|
abstract function unset(): void;
|
|
|
|
|
|
|
|
/** remplacer la valeur */
|
|
|
|
abstract function set($value): self;
|
|
|
|
|
|
|
|
/** obtenir le résultat de l'appel de la fonction {@link set()} */
|
|
|
|
abstract function result(): Result;
|
|
|
|
|
2023-11-27 22:39:35 +04:00
|
|
|
/** retourner true si la valeur est valide */
|
|
|
|
abstract function valid(): bool;
|
|
|
|
|
2023-11-28 00:20:42 +04:00
|
|
|
/** obtenir la valeur */
|
|
|
|
abstract function get($default=null);
|
|
|
|
|
2023-11-27 22:39:35 +04:00
|
|
|
/** retourner true si la valeur est dans sa forme normalisée */
|
|
|
|
abstract function normalized(): bool;
|
2023-11-28 00:20:42 +04:00
|
|
|
|
|
|
|
/** formatter la valeur pour affichage */
|
|
|
|
abstract function format($format=null): string;
|
2023-11-27 22:39:35 +04:00
|
|
|
}
|