8
votes

Une fonction peut-elle avoir plusieurs types de valeur de retour dans PHP?

Y a-t-il une façon de pouvoir que ma fonction PHP renvoie un type de valeur différent?

Le code suivant devrait expliquer ce que je veux dire: xxx

sur une condition i Je retourne une chaîne, sinon je retourne un booléen. Est-ce autorisé / possible?


5 commentaires

Ce n'est pas possible si vous vous souciez de bonnes pratiques :)


Juste parce que vous peut ne signifie pas que vous devrait .


Cela semble être un exemple terrible. Pourquoi pas seulement retourner vrai ?


@Brendanlong Je crois que c'était un exemple de «monde réel».


Cela peut ne pas être l'intention de la question de dépassement de pile retour multiple d'une fonction .


6 Réponses :


14
votes

Oui. PHP est typement dactylographié, de sorte que toute variable peut prendre n'importe quel type. Les valeurs de retour de fonction ne font pas exception.


4 commentaires

Et la peine d'ajouter que Beaucoup de fonctions PHP natif font cela. En fait, le manuel appelle ce type de retour «mixte».


@chris et même si le type de retour n'est pas mélangé, la fonction renvoie normalement le type de retour spécifié ou le faux / null. Alors oui, assez commun :)


Il n'est pas possible dans PHP 7 avec le mode strict activé


@Pikey Il est possible, tant que vous ne spécifiez pas de type de retour explicite. Le mode strict n'a aucun impact sur le code non typ.



-3
votes

est-ce autorisé / possible?

Yep.


0 commentaires

0
votes

Oui, c'est permis, pas comme dans C, Java, ..., où vous devez définir le retour.


0 commentaires

0
votes

il est permis. Cependant, il n'est pas conseillé dans le cas que vous avez donné. Pour un exemple où cela a du sens, jetez un coup d'œil à ex. Strows () fonction.


0 commentaires

4
votes

Oui, c'est possible (mais pas conseillé).

Vous devez au moins le déclarer dans votre commentaire Javadoc P>

/**
 * @param int $value
 * @return mixed string|boolean
 **/
public function test($value){
    if($value == 1){
        return "SUCCESS";
    } else {
        return false;
    }
}


0 commentaires

0
votes

Je m'interroge moi-même à ce sujet moi-même, pourquoi retourner quelque chose différent? Donc, l'extrémité de réception obtient deux choses à vérifier?

Je pense que je suis installé sur retourner une version vide du type ou un tableau avec un élément de statut moi-même.

Deux exemples, comment les choses peuvent changer dans Une fonction / méthode, et vous êtes essentiellement forcé de vérifier plus que prévu: xxx

version 2 xxx


0 commentaires