Class et retour de messages d'erreurs

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Class et retour de messages d'erreurs

Re: Class et retour de messages d'erreurs

par Furax » 25 oct. 2017, 11:24

Ok, il s'agit plus d'une histoire de préférence que d'un code de "bonne conduite" quoi. :)

Merci pour la réponse. :)

Re: Class et retour de messages d'erreurs

par ynx » 25 oct. 2017, 10:07

Salut,

J'ai une préférence pour le premier cas qui est plus concis. Dans ces cas la différence n'est pas flagrante mais pour des fonctions avec quelques if imbriqués, je trouve la lecture plus claire.
Exemple cas 1 :
function login() {
    if (userExist()) {
        $pass = getPass();
        
        if (passMatch()) {
            $role = getRole();
            
            if ($role) {
                return true;
            } else {
                return false;
            }
        } else {
            return false;
        }
    } else {
        return false;
    }
}
Exemple cas 2 :
function login2() {
    if (!userExist()) {
        return false;
    }
    
    if (!passMatch()) {
        return false;
    }
    
    $role = getRole();
            
    if (!$role) {
        return false;
    }
    
    return true;
}
Bonne journée,

Re: Class et retour de messages d'erreurs

par Furax » 24 oct. 2017, 09:39

Petite question rapide.
Vu que l'exécution du code s'arrête après un "throw new Exception", qu'est-ce que la "bonne conduite" nous dit de faire pour une condition:

Code : Tout sélectionner

if(!condition) { throw new Exception('Erreur!'); ] else { echo 'on continue'; }

Code : Tout sélectionner

if(!condition) { throw new Exception('Erreur!'); } On continue
Dans les 2 cas, "On continue" ne s'affichera que s'il n'y a pas eu d'exception lancée, mais peut-être qu'une solution est préférable à l'autre?

Merci!

Re: Class et retour de messages d'erreurs

par Furax » 22 oct. 2017, 19:44

Salut,

Ok, tout bêtement.
Bon ben c'est en cours d'utilisation. ;)

Merci!

Re: Class et retour de messages d'erreurs

par Calimero » 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

Class et retour de messages d'erreurs

par Furax » 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!