2010-08-30 6 views
8

En général, je vais écrire une fonction comme ceci:valeur de retour de la fonction php echo vs écho dans la fonction

function alertClass($field,$full=false){ 
global $formErrors; 
$html = $full ? ' class="alert"' : ' alert'; 
if (!empty($formErrors[$field])) return $html; 
} 

et où je veux que le html pour montrer que je vais faire écho à la valeur de retour de la fonction comme donc:

echo alertClass('somefield') 

Mais aujourd'hui je pensais pourquoi ne pas simplement mettre l'écho dans la fonction au lieu d'utiliser sa valeur de retour? Donc, au lieu de "return $ html" ce serait "echo $ html" ... Y at-il un avantage à l'un ou l'autre côté?

Répondre

0

Si vous n'utilisez pas la valeur retournée à nouveau, echo est meilleur.

6

Utilisation de la fonction echo avant d'utiliser la fonction pour créer par programmation un peu de code HTML en vue d'une sortie ultérieure ou d'un traitement ultérieur.

Si dans votre cas il n'y a aucun inconvénient à retourner le HTML, je continuerais à le faire. Cela ajoute de la flexibilité.

2

Cela dépend de l'objectif de la fonction.

En général, vous souhaiterez avoir vos fonctions aussi libres que possible des effets secondaires. Si vous allez sur l'écho de sortie à plusieurs endroits, votre code va commencer à devenir très confus. Une fonction qui renvoie une valeur est également plus polyvalente, car l'appelant peut décider de manipuler davantage cette valeur ou de la répercuter immédiatement. Cependant, si le but de la fonction est précisément de sortir du texte (par exemple des méthodes sur une classe chargée de construire et de sortir une page, selon un modèle), alors cela irait bien.

7

par exemple lorsque vous écho le texte de votre fonction comme ça ...

function yourStatus(){ 
    echo ' Done'; 
} 

echo 'Status ='. yourStatus(); 

votre sortie ressemblera à ceci

"DoneStatus =" 

au lieu de

"Status = Done" 

acclamations

1

Et récemment, je vois le code comme ceci:

function check_something($var) { 
    if($var) { 
     echo "true"; 
     return true; 
    } else { 
     echo "false"; 
     return false; 
    } 
} 

Pourquoi font-ils cela? Faire écho à quelque chose et retourner vrai/faux après cela? N'est-ce pas une mauvaise pratique/un mauvais style de codage?

Questions connexes