11
votes

Est-ce qu'un simple `retour` dans une fonction PHP met simplement fin à la fonction prématurément?

Je viens de voir cela

function text($var)   
{
    if ( ! $var) {
        return;
    }
    do_something();
}

$var = text('');


2 commentaires

Je pense que tu voulais dire xhr, pas hxr :)


@Gab - c'était juste un exemple que j'ai trouvé sur le net.


5 Réponses :


2
votes

réponse courte. Il met fin à la fonction, c'est un peu comme une fonction sans déclaration de retour. Rien n'est renvoyé, la fonction est juste excitée.

Dans votre deuxième exemple, $ var serait = rien.

Pourquoi ne pas l'exécuter et voir?


1 commentaires

Je voulais avoir une réponse de la communauté et j'espère des conseils. Merci pour votre réponse.



13
votes
function text($var) 

{

    if ( ! $var) {
        return;
    }
    do_something();

}

$var = text('');

echo gettype($var);
echo is_bool($var) ? "true" : "false";
echo is_string($var) ? "true" : "false";
echo is_null($var) ? "true" : "false";
returns:NULL
false
false
true

0 commentaires

9
votes

PHP est dactylographié dynamiquement, donc retourner aucune valeur n'est équivalente à renvoyer une valeur null dans n'importe quel type.


0 commentaires

5
votes

Un retour sans valeur ne renvoie NULL.

Plus d'informations du manuel:

si appelé à partir d'une fonction, la déclaration de retour () immédiatement termine l'exécution de la fonction en cours et renvoie son argument comme la valeur de l'appel de la fonction. retour () finira également l'exécution d'une instruction EVAL () ou d'un fichier de script.

Si appelé de la portée globale, alors exécution du script actuel Le fichier est terminé. Si le fichier de script actuel était inclus () ed ou Exiger () ED, alors le contrôle est transmis au fichier d'appel. En outre, si le fichier de script actuel était inclus () ed, alors le la valeur donnée à la déclaration () sera renvoyée comme valeur de l'inclusion () appel. Si le retour () est appelé à partir du fichier de script principal, alors L'exécution de script se termine. Si le fichier de script actuel a été nommé par le Auto_prepend_file ou auto_append_file Options de configuration dans php.ini, alors l'exécution de l'exécution du fichier de script est terminée.


0 commentaires

3
votes

oui, " retour; " ou retour (); Dans une fonction cesse d'exécuter cette fonction (ou fichier si l'instruction de retour n'est pas dans une fonction) à ce point (si le code est exécuté) et renvoie techniquement une valeur nulle.

Votre premier exemple sortirait le 'http / 1.1 403 interdit 'en-tête, puis mettre fin à cette fonction si la demande :: is_ajax () est égale vraie.

dans votre code exemple: xxx

Vous pouvez avoir le Suivre vient:

  • Si $ var n'est pas vrai (c'est-à-dire faux, null, texte ou entier), puis sortie fonction et renvoie null.
  • Si $ var est exactement vrai (l'instruction IF cochine si $ var est tout ce qui est vrai), puis exécutez do_something ();

    Je soupçonnerais que vous voudriez probablement changer la déclaration de si: xxx

    si vous voulez simplement faire_something () à une chaîne ou xxx

    si vous voulez seulement faire_something () à $ var si elle a été définie. Vous pouvez également vouloir changer votre déclaration de fonction à: Texte de la fonction ($ var == null) { Donc, si vous appelez du texte sans paramter, $ var est automatiquement défini sur NULL.


0 commentaires