Crea una funzione PHP con più ritorni

Ralfh Bryan Perez 30 gennaio 2023
  1. Array PHP per restituire più valori
  2. Funzione PHP con ritorno dinamico condizionale
  3. Combinazione di PHP Array e ritorno dinamico condizionale
  4. PHP generator per yield valori multipli
Crea una funzione PHP con più ritorni

Una funzione PHP è un blocco di istruzioni riutilizzabile, ci consente di avere un ritorno come una semplice stringa, un array o un oggetto JSON. Ma non è possibile avere più di un reso. Sebbene sia possibile utilizzare un array, creare un’istruzione condizionale per restituire una variabile dinamica o utilizzare i generatori (per PHP 5.5 e versioni successive).

Array PHP per restituire più valori

funtion arrayFunc(){
    $var1 = "return 1";
    $var2 = "return 2";
    
    return array($var1, $var2);
}

In applicazione:

$result = arrayFunc();
var_dump($result);
//output: array(2) { [0]=> string(8) "return 1" [1]=> string(8) "return 2" }

La funzione sopra può avere più ritorni sotto forma di un array, è possibile accedervi utilizzando:

$result = arrayFunc();
echo $result[0]; // return 1
echo $result[1]; // return 2

A partire da PHP 7.1, c’è una nuova funzione chiamata destructuring per le liste. Significa che è possibile fare cose come:

$array = ['dog', 'cat', 'horse', 'fish'];
[$q, $w, $e, $r] = $array;

echo $q; // output: dog
echo $w; // output: cat

L’applicazione in una funzione sarebbe simile a questa:

function descructingFunction(){
    return ['A', 'sample', 'descructing', 'function'];
}
[$a, $b, $c, $d] = descructingFunction();

echo $a; //output: A
echo $d; // output: function

Funzione PHP con ritorno dinamico condizionale

function condFunc($x = true){
    $ret1 = "One";
    $ret2 = "Two";
    
    if($x == true){
        return $ret1;
    }else{
        return $ret2;
    }
}

In applicazione:

echo condFunc(true);
//output: One

Adottando questo approccio, non è necessario restituire più valori. Pertanto, la funzione gestirà la condizione per filtrare il valore corretto necessario.

Combinazione di PHP Array e ritorno dinamico condizionale

Modificando leggermente la funzione si può avere la possibilità di restituire un array o un ritorno dinamico.

Esempio:

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’utilizzo di questo approccio consentirà alla funzione di essere più flessibile.

PHP generator per yield valori multipli

Una funzione generator non restituisce un valore, ma fornisce tutti i valori necessari. Restituisce un oggetto che può essere iterato.

Esempio:

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"
}

Nota: La parola chiave di un generator è yield. Agisce come un return a un’istruzione di funzione, ma non interrompe l’esecuzione e il ritorno, fornisce valore ai cicli di codice.

Attenzione: Quando si utilizza yield come espressione, deve essere racchiuso tra parentesi.

Esempio:

$generator = (yield $test);

Articolo correlato - PHP Function