Quoi de neuf sur Respect\Validation 3.0

DEV - 05/01
Respect\Validation est une bibliothèque de validation PHP qui simplifie les validations complexes, avec de nombreux...

Respect\Validation est une bibliothèque de validation PHP qui simplifie les validations complexes, avec de nombreux validateurs prêts à l'emploi. Il est conçu pour les ingénieurs qui valident les données des utilisateurs réels et doivent afficher des messages significatifs aux utilisateurs finaux sans problème. Il a été publié pour la première fois il y a plus de dix ans et a depuis atteint plus de 35 millions d'installations sur Packagist, près de 6 000 étoiles sur GitHub et des centaines de packages publics qui en dépendent.

La validation 3.0 arrive ce mois-ci – et c'est une grande nouveauté.

Je suis le principal responsable de Validation depuis longtemps, et après beaucoup de réflexion et plusieurs conversations avec des utilisateurs et de chers amis ingénieurs, j'ai refactorisé toute la bibliothèque et reconstruit le moteur à partir de zéro.

La validation a toujours la simplicité de rendre les validations complexes plus faciles pour les utilisateurs finaux, mais elle propose désormais une dénomination cohérente, une meilleure séparation des préoccupations, des capacités de personnalisation plus élevées, des fonctionnalités PHP modernes et une expérience de développement qui semble parfaite.

Dans cet article :

  • Erreurs précises pour les validateurs imbriqués
  • Composition des résultats
  • Raccourcis préfixés
  • Attributs PHP
  • Pas besoin d'exceptions
  • Chemins dans les messages d'erreur
  • Traces de pile utiles
  • Utilisez votre propre exception
  • Utilisez vos propres modèles
  • Attacher des modèles à la chaîne
  • Tuyaux d'espace réservé
  • Nommer les validateurs

Erreurs précises pour les validateurs imbriqués

Les versions précédentes de Validation présentaient une limitation fondamentale : lorsqu'un validateur réussissait, rien ne se passait - et lorsqu'il échouait, il levait une exception. Cela semble raisonnable jusqu'à ce que vous considériez les validateurs qui enveloppent d'autres validateurs, commePas.

Voici le problème. Dans les versions précédentes, lorsque vous écriviez :

// Avant la v3 🤔 v::not(v::not(v::intType()))->assert('not an integer'); // → Ces règles ne doivent pas passer pour "pas un entier"
Entrer en mode plein écran Quitter le mode plein écran

Cryptique. Quelles règles ? Pourquoi? La bibliothèque n'a pas pu produire un message cohérent parce que le contenu internepas (intType())réussi (depuis'pas un entier'n'est pas un entier), mais l'extérieurPasJe n'avais aucune idée de la raison pour laquelle il avait été adopté - seulement que c'était le cas.

Il y a des années, j'ai lu Remplacer les exceptions lancées par des notifications dans les validations de Martin Fowler, et cela a suscité quelques idées. Et si nous pouvions faire quelque chose de similaire en Validation ? Et si chaque validateur (réussite ou échec) renvoyait un objet de résultat qui capture ce qui s'est passé et pourquoi ?

Après avoir joué avec différents prototypes et avec les dernières fonctionnalités de PHP, j'ai trouvé un objet de résultat qui contient tout ce dont nous avons besoin, sans beaucoup de verbosité. Désormais, lorsque les validateurs rédigent, ils peuvent inspecter les résultats de chacun et produire des messages qui ont réellement du sens :

// v3 👍 v::not(v::not(v::intType()))->assert('pas un entier'); // → "pas un entier" doit être un entier
Entrer en mode plein écran Quitter le mode plein écran

Quelle que soit la profondeur de l’imbrication, Validation sait désormais exactement ce qui s’est passé et vous l’indique clairement.

Ce changement a également débloqué des fonct...
[Courte citation de 8% de l'article original]

Loading...