2.6 KiB
nulib\schema
-
ensureKeys() et orderKeys() se fait au niveau de access (ou input?)
- access/input ne pouvant pas connaître les valeurs appropriées, c'est le schéma qui les génère. ensureKeys($values)
- méthode ensureAssoc() transforme les clés séquentielles en clés associatives
-
l'ordre est ensureAssoc [--> ensureKeys] [--> orderKeys]
-
valeurs composite/computed
- analyse / vérification de la valeur complète après calcul du résultat, si tous les résultats sont bons
- calcul des valeurs composites/computed par une fonction avant/après l'analyse globale si résultat ok
- fonction getter_func, setter_func, deleter_func pour les propriétés de type computed
-
tdate et tdatetime. qu'en est-il des autres classes (delay, etc.)
- possibilité de spécifier le format de la date à analyser
-
ScalarSchema::from_property()
-
dans AssocSchema, support
[key_prefix]
qui permet de spécifier un préfixe commun aux champs dans le tableau destination, e.g$wrapper = Schema::ns($schema, [ "a" => "?string", "b" => "?int", ])->newWrapper(); $value = ["x_a" => 5, "x_b" => "10"], $wrapper->reset($value, null, [ "key_prefix" => "x_", ]); # $value vaut ["x_a" => "5", "x_b" => 10];
définir si le préfixe doit être spécifié sur le schéma ou sur la valeur... actuellement, le code ne permet pas de définir de tels paramètres...
alternative: c'est lors de la définition du schéma que le préfixe est ajouté e.g
$wrapper = Schema::ns($schema, [ "a" => "?string", "b" => "?int", ], [ "key_prefix" => "x_", ])->newWrapper(); $value = ["x_a" => 5, "x_b" => "10"], $wrapper->reset($value); # $value vaut ["x_a" => "5", "x_b" => 10];
-
actuellement, pour un schéma associatif, si on normalise un tableau séquentiel, chaque valeur correspond à la clé de même rang, eg. pour un schéma
const SCHEMA = ["first" => DEF, "second" => DEF]; const ARRAY = ["first", "second"];
la valeur normalisée de
ARRAY
est["first" => "first", "second" => "second"]
cependant, dans certaines circonstances (notamment pour des paramètres), on devrait pouvoir considérer une valeur indexée comme un flag, i.e la valeur normalisée de ARRAY serait
["first" => true, "second" => true]
la définition de ces "circonstances" est encore à faire: soit un paramètre lors de la définition du schéma, soit un truc magique du genre "toutes les valeurs séquentielles sont des clés du schéma"
-- coding: utf-8 mode: markdown -- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary