Je vérifie les arguments de mes classes en php en utilisant des fonctions de lancement d'exception. J'ai des fonctions qui font un contrôle de base (===
, in_array
etc) et jettent une exception sur false. Je peux donc faire assertNumeric($argument, "\$argument is not numeric.");
au lieu deutilisation d'assertions pour la vérification de type en PHP?
if (! is_numeric($argument)) {
throw new Exception("\$argument is not numeric.");
}
Enregistre quelques frappes
Je lisais dans les commentaires des php manual page on assert() que
Comme indiqué sur Wikipédia - « assertions sont avant tout un outil de développement , ils sont souvent désactivés quand un programme est publié au public . " . Et « Assertions devraient être utilisés pour documenter situations et découvrir errors- programmation logiquement impossible si le « impossible » se produit, alors quelque chose est manifestement erronée fondamentale Ceci est distinct de la gestion des erreurs: la plupart des conditions d'erreur sont possibles, . bien que certains puissent être extrêmement peu susceptibles de se produire dans la pratique utilisant affirmations comme une erreur d'usage général mécanisme de manipulation est généralement peu judicieux: affirmations ne permettent pas la récupération gracieuse d'erreurs, et une défaillance affirmation arrêtera souvent programme execu brusquement. Assertions aussi ne pas afficher une erreur conviviale un message . »
Cela signifie que les conseils donnés par « gk à proliberty dot com » pour forcer affirmations à activer, même si ils ont été désactivés manuellement , GOES aux meilleures pratiques de l'utilisation que eux comme un outil de développement
Alors, suis je le fais mal? »Quels sont les autres/meilleures façons de le faire sont là
?
Juste comme une remarque: Voulez-vous valider l'entrée utilisateur de cette façon? Si tel est le cas, je ne pense pas que cette entrée d'utilisateur invalide soit quelque chose d'exceptionnel. – Maxem
@Maxem Eh bien, cela pourrait arriver si je ne code pas de façon robuste. Fondamentalement, ce que je fais est de rendre l'objet notablement inutile si les arguments sont mauvais. J'aime la philosophie KISS. – user151841
Ce qui serait * exceptionnel *, c'est que si votre validateur d'entrée utilisateur échouait et plus bas dans les bibliothèques, ils s'attendaient vraiment à une entrée saine et à des choses folles. * that * serait une exception. Le test s'appellerait un contrôle de santé mentale. –