nulib/php/src/ref/schema/ref_schema.php

62 lines
3.1 KiB
PHP

<?php
namespace nulib\ref\schema;
class ref_schema {
/** @var array schéma des natures de schéma */
const NATURE_METASCHEMA = [
0 => ["string", null, "nature du schéma",
"allowed_values" => ["scalar", "assoc", "list"],
],
"compute_func" => ["?callable", null, "fonction qui calcule les valeurs des champs computed"],
"validate_func" => ["?callable", null, "fonction qui vérifie la conformité de l'objet dans son ensemble"],
];
/** @var array meta-schéma d'une valeur */
const VALUE_METASCHEMA = [
"type" => ["array", null, "types possibles de la valeur", "required" => true],
"default" => [null, null, "valeur par défaut si la valeur n'existe pas"],
"title" => ["?string", null, "libellé de la valeur"],
"required" => ["bool", false, "la valeur est-elle requise?"],
"nullable" => ["?bool", null, "la valeur peut-elle être nulle?"],
"desc" => ["?content", null, "description de la valeur"],
"analyzer_func" => ["?callable", null, "fonction qui analyse une valeur entrante et indique comment la traiter"],
"extractor_func" => ["?callable", null, "fonction qui extrait la valeur à analyser dans une chaine de caractère"],
"parser_func" => ["?callable", null, "fonction qui analyse une chaine de caractères pour produire la valeur"],
"normalizer_func" => ["?callable", null, "fonction qui normalise la valeur"],
"messages" => ["?array", null, "messages à afficher en cas d'erreur d'analyse"],
"formatter_func" => ["?callable", null, "fonction qui formatte la valeur pour affichage"],
"format" => [null, null, "format à utiliser pour l'affichage"],
"" => ["array", ["scalar"], "nature du schéma",
"schema" => self::NATURE_METASCHEMA,
],
"schema" => ["?array", null, "schéma de la valeur si c'est un array"],
"name" => ["?string", null, "identifiant de la valeur"],
"pkey" => ["?pkey", null, "chemin de clé de la valeur dans un tableau associatif"],
"header" => ["?string", null, "nom de l'en-tête s'il faut présenter cette donnée dans un tableau"],
"computed" => ["?bool", null, "ce champ est-il calculé? si oui, il n'est pas demandé en entrée ni validé"],
];
const MESSAGES = [
"missing" => "Vous devez spécifier cette valeur",
"unavailable" => "Vous devez spécifier cette valeur",
"null" => "Cette valeur ne doit pas être nulle",
"empty" => "Cette valeur ne doit pas être vide",
"invalid" => "Cette valeur est invalide",
];
/** @var array clés supplémentaires de schéma de la nature scalaire */
const SCALAR_NATURE_METASCHEMA = [
];
/** @var array clés supplémentaires de schéma de la nature associative */
const ASSOC_NATURE_METASCHEMA = [
"ensure_array" => ["bool", false, "faut-il s'assurer que le tableau destination est non nul?"],
"ensure_keys" => ["bool", true, "faut-il s'assurer que toutes les clés existent?"],
"ensure_order" => ["bool", true, "faut-il s'assurer que les clés soient dans l'ordre?"],
];
/** @var array clés supplémentaires de schéma de la nature liste */
const LIST_NATURE_METASCHEMA = [
];
}