jsonschema.inc.php
validation de la conformité d'une instance Php à un schéma JSON
journal:
- 3/9/2023:
- reformattage de la doc en PHPDoc
- définition d'un espace de noms et renommage des noms de classe
- suppression de is_assoc_array() remplacé par !array_is_list()
- 22/1/2021:
- passage à Php 8
- redéfinition de la logique de tests élémentaires
- Schema::autocheck() transmet le répertoire du doc au schéma
- 5/11/2020:
- ajout constructeur sur Status pour permettre une initialisation non vide
- 3/4/2020:
- modification du mécanisme de registre de schéma
- Les URI en http://id.georef.eu/ et http://docs.georef.eu/ ne sont pas réécrites dans Lib::predef() mais traitées par Lib::deref() en faisant appel à getFragmentFromPath() définie dans YamlDoc
- 24/2/2019:
- modification des règles de réécriture dans Lib::predef()
- 5-8/2/2019:
- ajout de la possibilité dans Lib::file_get_contents() d'exécuter un script Php renvoyant un array Php
- 26/1/2019:
- modification dans Schema::autoCheck() du cas ou on ajoute .schema.yaml au nom du fichier du schéma
- 24/1/2019:
- utilisation du mot-clé $schema à la place de jSchema
- 23/1/2019:
- correction d'un bug lors de l'ouverture d'un schéma dont le chemin est défini en relatif
- amélioration de l'erreur lors qu'un élément d'un schéma n'est pas défini
- 19/1/2019:
- scission du fichier jsonschema.inc.php en jsonschema.inc.php et jsonschelt.inc.php
- ajout de Lib::deref() pour déréférencer un pointeur JSON
- permet d'utiliser les URL http://{name}.georef.eu/ pour des docs autres que des schémas
- ajout de la possibilité de définir des options d'affichage dans Schema::check()
- ajout de Schema::autoCheck() pour vérifier qu'une instance est conforme au schéma défini par le champ jSchema
- 18/1/2019:
- Ajout fonctionnalité d'utilisation de schémas prédéfinis
- 16-17/1/2019:
- Correction d'un bug sur items
- Modif de la logique de vérification pour ne pas traiter les ensembles de types comme des anyOf()
- Traitement de AdditionalItems comme schema
- 15/1/2019:
- Correction d'un bug sur PropertyNames
- 11-14/1/2018:
- Renforcement des tests et correction de bugs
- ajout additionalProperties, propertyNames, minProperties, maxProperties, minItems, maxItems, contains, uniqueItems minLength, maxLength, pattern, Generic Enumerated misc values, Generic const misc values, multiple, dependencies allOf, oneOf, not, Tuple validation, Tuple validation w additional items, format
- Publication sur Gihub
- 9-10/1/2018:
- Réécriture complète en 3 classes: schéma JSON, élément d'un schéma et statut d'une vérification
- Correction d'un bug dans la vérification d'un schéma par le méta-schéma
- 8/1/2018:
- BUG trouvé: lorsqu'un schéma référence un autre schéma dans le même répertoire,
- le répertoire de référence doit être le répertoire courant du schéma
- 7/1/2019:
- BUG trouvé dans l'utilisation d'une définition dans un oneOf,
- oneOf coupe le lien vers le schema racine pour éviter d'enregistrer les erreurs alors que les référence vers une définition a besoin de ce lien voir http://localhost/schema/?action=check&file=ex/route500
- début de correction
- quand on a une hiérarchie de schéma, dans lequel chercher une définition ?
- a priori je prenais la racine mais ce n'est pas toujours le cas
- solution: distinguer les vrai schémas des pseudo-schémas qui sont des parties d'un schéma
- 3/1/2019
- les fonctions complémentaires ne sont définies que si elles ne le sont pas déjà
- correction bug
- 2/1/2019
- ajout oneOf
- correction du test d'une propriété requise qui prend la valeur nulle
- correction de divers bugs détectés par les tests sur des exemples de GeoJSON
- assouplissement de la détection dans $ref au premier niveau d'un schema
- ajout d'un mécanisme de tests unitaires
- ajout patternProperties et test sur http://localhost/yamldoc/?doc=dublincoreyd&ypath=%2Ftables%2Fdcmes%2Fdata
- 1/1/2019
- première version
Table of Contents
Classes
- Status
- Statut de vérification de conformité d'une instance à un schéma
- Lib
- classe statique portant qqs méthodes statiques
- Schema
- schéma JSON initialisé soit par un chemin dans un fichier JSON/Yaml, soit par un array Php