Class et retour de messages d'erreurs

Eléphant du PHP | 56 Messages

06 oct. 2017, 17:00

Bonjour,

Petite question concernant la gestion des retours d'erreur à partir des fonctions présentent dans des class.
En cas de retour pour le moment je fais un "return false;", et dans mon code je vérifie sur mon appel retourne false (auquel cas j'affiche un message d'erreur), ou pas, et le traitement continue.

Le souci avec cette méthode c'est que je n'ai pas de message d'erreur personnalisé en fonction de ce qui s'est passé.

Exemple concret: je veux vérifier qu'une personne que j'enregistre n'est pas déjà présente dans la base, et ensuite qu'elle a, par exemple, plus de 18 ans. En 2 "if" donc.
Avec ma méthode, je retournerai "false" dans les 2 cas, et donc, difficile d'aiguiller l'utilisateur sur l'erreur.

La plupart du temps les retours corrects sont des tableaux de données, et je pourrais donc vérifier avec un "is_array", mais je ne sais pas si c'est "propre" comme solution ou pas...

Bref, qu'elle pourrait être une bonne façon de faire?

Merci!

ViPHP
ViPHP | 2286 Messages

16 oct. 2017, 23:45

Salut :-)

PHP offre deux options intéressantes pour des erreurs personnalisées : il y a la fonction http://php.net/trigger_error (je te laisse aller voir la page de manuel et te ballader dans les liens associés, tous intéressants) qui permet de lancer une erreur php quasiment "classique", à ceci près que le niveau de sévérité ainsi que le message sont personnalisables. Mais il y a encore mieux.

Le must en matière de gestion d'erreur en POO, ce sont les exceptions.

Les exceptions sont des classes qui héritent toutes de la classe de base Exception, éxécutées avec le mot-clé spécial throw et (le plus sympa) peuvent être attrappées avec le mot-clé catch. Là aussi on peut personnaliser (c'est même le but), non seulement le message (qui est le paramètre transmis lors de l'instanciation de l'exception) mais aussi la classe de l'exception elle-même (on peut déclarer ses propres sous-classes qui héritent d'Exception ou une de ses classes-filles prédéfinies, ça marche fort bien et c'est propre). Une exception non attrapée par un bloc try/catch a un comportement proche d'une erreur php. La page de manuel explique assez bien de quoi il retourne : http://php.net/manual/fr/language.exceptions.php
if([email protected]work()){ Nespresso(); } else { what(); }
______________________________