Valeurs de retour des fonctions

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 : Valeurs de retour des fonctions

par Invité » 02 nov. 2007, 13:31

salut, je propose que ta fonction isValidUser doit retourner true or false et les autres cas tu les traite comme exception...

par cf357 » 04 sept. 2007, 15:58

héhé j'avais commencé une classe d'erreurs, je devrais m'y remettre tiens (tu m'y refais penser !) ! :)

par mere-teresa » 04 sept. 2007, 14:58

Tu peux aussi retourner un tableau : codeErreur et Message

par Sékiltoyai » 04 sept. 2007, 13:48

Pourtant, en C, généralement, les codes d'erreur sont positifs…

par cf357 » 04 sept. 2007, 09:08

J'ai l'habitude en C de retourner '-1' en cas d'erreur, mais en PHP, ça ne change rien, if (-1) passe toujours ;)

par mojorisin » 04 sept. 2007, 07:42

Salut,
sinon rien ne t'empeche de retourner des chiffres négatif selon les types d'erreur.

par cf357 » 03 sept. 2007, 15:36

Bien vu :)
Mon système d'authentification suit une architecture MVC (voir mon topic précédent dans cette même section) et une solution comme celle là s'intégrera parfaitement en mettant les bons traitement sur chaque couche !

par Jules Petibidon » 03 sept. 2007, 15:26

Hello,

Une classe est intéressante dans ton cas... imagine un script du style :
if( Auth::isValidUser( $login, $pass) === false ){
    $erreur = Auth::getError();
    // traitement en fonction de l'erreur
}
else{
    // traitement en cas de réussite
}
T'as plus qu'à faire ta classe en fonction de ça... rien de bien sorcier ?

Bon courage !

par cf357 » 03 sept. 2007, 15:02

C'est vrai que le nom est une première manière de sous-entendre un "type" de résultat...

Personnellement j'avais utilisé LoginUser(a, b) :) .

par Sékiltoyai » 03 sept. 2007, 14:54

Pour éviter les fautes de ce genre, tu peux renommer ta fonction en verifValidUser(). Le is de isValidUser sous entend que ta fonction retournera un booléen, alors qu'un verif ne sous entend rien, et oblige le développeur à s'assurer des valeurs de retour.

Valeurs de retour des fonctions

par cf357 » 03 sept. 2007, 14:46

Bonjour,

je suis confronté à un choix ; qui ne me pose pas de problème en soi, mais comme ça me semble être une bonne interrogation, je vous en fait part !

Supposons que je sois en train de développer un système d'authenfiication. Je dois donc coder une fonction de ce type :
int  isValidUser(string $login, string $password)
Cette fonction doit retourner plusieurs codes d'erreurs possible :
- Authentification OK
- Le pseudo n'existe pas
- Le mot de passe est incorrect
- La vérification n'a pu avoir lieu

Mon interrogation est liée à la chose suivante :

Ce genre de fonction peut être destinée à être utilisée à différents endroits d'une application, par différents développeurs. Un développeur peu attentif pourrait faire la chose suivante :
if (isValidUser('toto', 'tata')) // au lieu de isValidUser('toto', 'tata') == 42 par  exemple
{
    // création du cookie, sessions, blabla...
}
else
{
    // message en fonction du code d'erreur
}

Seulement, du fait qu'il y ai plusieurs code possibles, si on choisis des entiers (autres que zéro), la fonction sera toujours considérée comme "vraie", ce qui pose des soucis de fonctionnement et sécurité évidents. Comment alors éviter au mieux ces situations ? A mon avis c'est ici une fausse question, étant donné que le développeur est sensé maitriser les valeur de retour, mais bon, je vous fais tout de même part de ma réflexion !