nur-sery/src/schema/Value.php

54 lines
1.4 KiB
PHP
Raw Normal View History

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
}