Download the PHP package andydefer/data-validator without Composer
On this page you can find all versions of the php package andydefer/data-validator. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download andydefer/data-validator
More information about andydefer/data-validator
Files in andydefer/data-validator
Package data-validator
Short Description Validates and sanitizes structured data arrays with configurable constraints (size, depth, nesting, key/value types).
License MIT
Informations about the package data-validator
MetadataValidator — Validation et assainissement de données structurées pour PHP
MetadataValidator est une bibliothèque PHP légère pour la validation et l'assainissement de données structurées (métadonnées). Elle applique des contraintes de sécurité strictes : taille maximale, profondeur d'imbrication, nombre de clés, longueur des clés, et validation des types. Parfaite pour stocker des métadonnées de tokens, configurations utilisateur, ou toute donnée structurée nécessitant des garde-fous.
📦 Installation
Aucune dépendance framework — fonctionne avec n'importe quel projet PHP.
🚀 Démarrage rapide
1. Valider des métadonnées
2. Gérer les erreurs
🛡️ Contraintes de sécurité
Par défaut, MetadataValidator applique les limites suivantes :
| Contrainte | Valeur par défaut |
|---|---|
| Taille maximale (JSON) | 64 KB |
| Profondeur d'imbrication max | 5 niveaux |
| Nombre maximum de clés | 100 |
| Longueur maximale d'une clé | 255 caractères |
| Types de clés autorisés | string ou int |
| Types de valeurs autorisés | scalar, array, null |
📖 API complète
validate(?array $metadata): ?array
Valide les métadonnées selon toutes les contraintes.
isValid(?array $metadata): bool
Version sans exception — retourne true ou false.
sanitize(?array $metadata): ?array
Supprime récursivement :
- Les valeurs
null - Les tableaux vides (
[])
Retourne null si le résultat est vide.
process(?array $metadata): ?array
Valide ET assainit en une seule opération.
getSize(?array $metadata): int
Retourne la taille des métadonnées en bytes (après json_encode).
getNestingDepth(array $metadata, int $currentDepth = 1): int
Calcule la profondeur d'imbrication maximale.
🧪 Exemples concrets
Exemple 1 : Stockage de métadonnées utilisateur
Exemple 2 : Refus de métadonnées malveillantes
Exemple 3 : Nettoyage automatique
🧰 Intégration avec d'autres bibliothèques
Avec un ORM (Eloquent / Doctrine)
Avec un système de tokens (ex: Nemesis)
📊 Comparaison avec d'autres solutions
| Fonctionnalité | array_filter() |
json_validate() |
MetadataValidator |
|---|---|---|---|
| Validation taille JSON | ❌ | ❌ | ✅ (64KB max) |
| Profondeur max | ❌ | ❌ | ✅ (5 niveaux) |
| Nombre max de clés | ❌ | ❌ | ✅ (100 clés) |
| Longueur max des clés | ❌ | ❌ | ✅ (255 chars) |
| Validation types des valeurs | ❌ | ❌ | ✅ (scalar/array/null) |
Assainissement récursif (null, []) |
❌ | ❌ | ✅ |
| Détails d'erreur contextuels | ❌ | ❌ | ✅ |
| Pas de dépendances framework | ✅ | ✅ | ✅ |
🔧 Utilisation avancée
Personnalisation des limites
Pour modifier les limites, étendez la classe ou fork.
Journalisation des erreurs
🧪 Tests
Plus de 2500 tests avec une couverture de 92%.
🤝 Contribution
- Fork + branche
feature/ma-fonctionnalité composer test(tous les tests doivent passer)- Pull request vers
main
📄 Licence
MIT © Kani
❓ FAQ
Pourquoi ne pas utiliser simplement json_validate() ?
json_validate()vérifie uniquement la syntaxe JSON, pas les contraintes métier (taille, profondeur, types).
Les ressources PHP sont-elles autorisées ?
- Non. Les ressources sont converties en
falseparjson_encode(), ce qui déclenche uneTypeError. Utilisez des scalaires, tableaux ounull.
Peut-on stocker des objets ?
- Non. Les objets ne sont pas autorisés (exception levée). Utilisez des tableaux associatifs.
Ce package a-t-il des dépendances ?
- Aucune — uniquement PHP 8.3+.
Puis-je l'utiliser sans Laravel ?
- Absolument — pas de dépendance framework.
MetadataValidator – La solution simple, sécurisée et sans framework pour valider et nettoyer vos données structurées. 🔐✨