Fonction + renvoie d'erreur [Résolu]

Messages postés
329
Date d'inscription
samedi 4 janvier 2003
Dernière intervention
29 mars 2015
- 23 févr. 2007 à 15:13 - Dernière réponse :
Messages postés
329
Date d'inscription
samedi 4 janvier 2003
Dernière intervention
29 mars 2015
- 23 févr. 2007 à 16:15
    Saluté ...
j'ai une question sur les fonctions... Comme j'ai appris une 'vrai' fonction est censée renvoyer un résultat true ou false de façon à pouvoir l'utiliser comme suit

if (mafonction() ){
    echo 'ça dit true';
} else {
    echo 'ça dit false';
}

bon ça je sais faire ...sauf que j'aimerai que ma fonction quand elle renvoie false renvoie aussi à côté une variable avec à l'intérieur un message d'erreur que je puisse afficher ...
c'est possible ça ?

merci
@+
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Dernière intervention
13 septembre 2013
- 23 févr. 2007 à 16:00
3
Merci
En fait, il faut mettre le & dans la définition de la fonction mais pas lors de l'appel...

Dans un passage par valeur (comme normalement) une copie de la valeur de la variable est donnée à la fonction ; quelque soit donc le comportement de la fonction, cela n'affecte pas la variable originale.

Avec un passage par référence, c'est l'adresse mémoire qui est transmise à la fonction... Les modifs se font donc sur la variable directement! :)

@++

R@f

La boîte à bouts de codes
"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"

Merci coockiesch 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de coockiesch
Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Dernière intervention
13 septembre 2013
- 23 févr. 2007 à 15:17
0
Merci
Yop!
Si vraiment tu veux une fonction 100% bool:

$error = NULL;
function maFonction( &$error ) // passage de $error par référence
{
  // code php ici

  if( ... ) // si erreur
  {
    $error = 'erreur1';
    return false;
  }

  // encore du code

  if( ... ) // si erreur

  {

    $error = 'erreur2';

    return false;

  }

  return true;
}

Si ca renvoie false, l'erreur est dans $error...

Sinon, si tu n'as pas besoin d'une fonction à 100% bool, tu peux renvoyer true en cas de succès et un message d'erreur sinon...

@++

R@f

La boîte à bouts de codes
"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
Commenter la réponse de coockiesch
Messages postés
329
Date d'inscription
samedi 4 janvier 2003
Dernière intervention
29 mars 2015
- 23 févr. 2007 à 15:37
0
Merci
    yess je vais essayer ...
ben le truc c'est que dans mon cas l'erreur ne doit pas forcément s'afficher au moment de l'exé de la fonction et en plus la fonction vas tester un tas de paramètres donc certains seront ok et d'autres non ... donc je dois générer une erreur personnalisée pour chaque paramètre testé ... il me faut donc un renvoi du message d'erreur à côté de la réponse bool ...

c'est le & dans la syntaxe qui permet ça ?
en fait dans function maFonction( &$error )
&$error n'est pas un paramètre qu'on envoie à la fonction mais une variable que la fonction vas me renvoyer en en plus de son return ?

ou bien c'est ma fonction qui vas remplir la variable $error mais qui est placée en dehors d'elle même ? (dans ce cas faut il obligatoirement la déclarer avant d'exécuter cette fonction ?)

merci pour tout
@++
Commenter la réponse de cs_caviar
Messages postés
329
Date d'inscription
samedi 4 janvier 2003
Dernière intervention
29 mars 2015
- 23 févr. 2007 à 15:42
0
Merci
re
je viens de tester en  local mais j'ai un message d'erreur

Warning: Call-time pass-by-reference has been deprecated -
argument passed by value; If you would like to pass it by reference,
modify the declaration of [runtime function name](). If you would like
to enable call-time pass-by-reference, you can set
allow_call_time_pass_reference to true in your INI file. However,
future versions may not support this any longer.

c'est pas activé par défaut le passage par référence ?
bizare non
++
Commenter la réponse de cs_caviar
Messages postés
329
Date d'inscription
samedi 4 janvier 2003
Dernière intervention
29 mars 2015
- 23 févr. 2007 à 15:46
0
Merci
    bon ben j'ai trouvé ça à ce sujet
http://www.developpez.net/forums/showthread.php?t=55023

apparament ça fait un moment que ça ne se fait plus comme méthode :(...
je pense que mon hébergeur ne me permettra pas de l'utiliser

comment puis je faire autrement ?
Commenter la réponse de cs_caviar
Messages postés
329
Date d'inscription
samedi 4 janvier 2003
Dernière intervention
29 mars 2015
- 23 févr. 2007 à 16:15
0
Merci
    ok...ça peut être pratique effectivement !
je vais utiliser ça !
merci bcp !
@++
Commenter la réponse de cs_caviar

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.