Comment créer une fonction PHP avec des retours multiples
-
PHP
array
pour retourner des valeurs multiples - Fonction PHP avec retour dynamique conditionnel
- Combinaison d’un tableau PHP et d’un retour dynamique de condition
-
PHP
générateur
àrendement
de valeurs multiples
Une fonction PHP est un bloc d’instructions réutilisable, elle nous permet d’avoir un retour étant une simple chaîne, un tableau ou un objet JSON. Mais il n’est pas possible d’avoir plus d’un retour. Vous pouvez cependant utiliser un tableau, créer une instruction conditionnelle pour retourner une variable dynamique ou utiliser les générateurs (pour PHP 5.5 et plus).
PHP array
pour retourner des valeurs multiples
funtion arrayFunc(){
$var1 = "return 1";
$var2 = "return 2";
return array($var1, $var2);
}
En application:
$result = arrayFunc();
var_dump($result);
//output: array(2) { [0]=> string(8) "return 1" [1]=> string(8) "return 2" }
La fonction ci-dessus peut avoir plusieurs retours sous la forme d’un tableau, elle est accessible en utilisant:
$result = arrayFunc();
echo $result[0]; // return 1
echo $result[1]; // return 2
Depuis PHP 7.1, il existe une nouvelle fonction appelée destructuring
des listes. Cela signifie qu’il est possible de faire des choses comme:
$array = ['dog', 'cat', 'horse', 'fish'];
[$q, $w, $e, $r] = $array;
echo $q; // output: dog
echo $w; // output: cat
L’application d’une fonction ressemblerait à ceci:
function descructingFunction(){
return ['A', 'sample', 'descructing', 'function'];
}
[$a, $b, $c, $d] = descructingFunction();
echo $a; //output: A
echo $d; // output: function
Fonction PHP avec retour dynamique conditionnel
function condFunc($x = true){
$ret1 = "One";
$ret2 = "Two";
if($x == true){
return $ret1;
}else{
return $ret2;
}
}
En application:
echo condFunc(true);
//output: One
En adoptant cette approche, il n’est pas nécessaire de renvoyer des valeurs multiples. Ainsi, la fonction traitera la condition de filtrer la valeur correcte nécessaire.
Combinaison d’un tableau PHP et d’un retour dynamique de condition
En modifiant un peu la fonction, on peut avoir la possibilité de renvoyer un tableau ou un retour dynamique.
Exemple:
function combination($x = true){
$ret1 = "One";
$ret2 = "Two";
if($x === true){
return $ret2;
}
if($x == "both"){
return array($ret1, $ret2);
}
}
echo combination(); //output: Two
var_dump(combination("both")) //output: array(2) { [0]=> string(8) "return 1" [1]=> string(8) "return 2" }
L’utilisation de cette approche permettra à la fonction d’être plus flexible.
PHP générateur
à rendement
de valeurs multiples
Une fonction de générateur
ne retourne pas une valeur, mais renseigne
autant de valeurs que nécessaire. Elle retourne un objet qui peut être itéré.
Exemple:
function multipleValues(){
yield "return 1";
yield "return 2";
}
$return = multipleValues();
foreach($return as $ret){
echo $ret; //$ret first value is "return 1" then "return 2"
}
Note: Le mot-clé d’un générateur
est yield
. Il agit comme un return
à une instruction de fonction, mais il n’arrête pas l’exécution et retourne, il fournit une valeur aux boucles de code.
Caution: Quand on utilise yield
comme expression, il doit être entouré de parenthèses.
Exemple:
$generator = (yield $test);