Costrutto return

Costrutto return in PHP, a cosa serve e come funziona

In questa guida analizziamo brevemente una delle strutture di controllo più semplici ma anche più utilizzate nella programmazione, il costrutto return.

Come dice il nome stesso il costrutto return restituisce qualcosa, nello specifico un valore che può essere di qualsiasi tipo: un numero intero o decimale, una stringa, un array, un booleano e persino un oggetto come vedremo quando studieremo l'OOP.

Il suo utilizzo più comune è con le funzioni PHP, argomento che affronteremo a breve. Per adesso ci limitiamo a dire che una funzione è un insieme di istruzioni racchiuse tra parentesi graffe che prende un input, lo elabora e restituisce un risultato.

Come funziona return

Se viene chiamato all'interno di una funzione, il costrutto return termina immediatamente l'esecuzione della funzione corrente e restituisce il suo argomento come valore della funzione chiamata.

L'esecuzione dello script riprende dalla riga successiva a quella della chiamata alla funzione.

<?php
function sum($a, $b)
{
    $s = $a + $b;
    return $s;
}

$sum = sum(4, 9); // chiamata alla funzione sum()
echo "La somma è uguale a $sum";

Se viene chiamato a livello globale, ossia non all'interno di una funzione, verrà terminata l'esecuzione dello script corrente.

<?php
$a = 4;
$b = 9;
$sum = $a + $b;
return $sum;

echo "La somma è uguale a $sum"; // Questa riga non viene eseguita

Nel caso in cui lo script contenente return sia un file incluso tramite i costrutti include o require, il controllo viene passato al file chiamante e il valore dato da return verrà restituito come valore della chiamata a include, quindi potrà essere memorizzato dentro una variabile.

Supponiamo di voler inviare un'email, memorizziamo in un array associativo le impostazioni per l'invio e lo ritorniamo con return

<?php
/****************/
/*
/* mail-config.php
/*
/****************/

return [
    'host' => 'localhost',
    'port' => 465,
    'protocol' => 'ssl',
    'user' => 'mariorossi@gmail.com',
    'password' => '1234567890'
];

Tramite il costrutto include memorizziamo l'array delle impostazioni dentro una variabile in modo tale da poterle utilizzare ove necessario

<?php
/**********/
/*
/* mail.php
/*
/**********/

$config = include 'mail-config.php'; // include ritorna l'array definito in mail-config.php

// Istruzioni per l'invio di un'email

Dagli esempi di codice appena visti possiamo dedurre che:

  • È possibile restituire uno e un solo valore con return.
  • Se si desidera restituire più di un valore, è necessario utilizzare un array.
  • Qualsiasi istruzione successiva a return verrà ignorata.

Inoltre

  • È possibile non restituire nulla, semplicemente scrivendo return;
  • Il tipo di dato restituito può essere integer, float, string, array, object o null.
  • È possibile restituire direttamente il risultato di una condizione. Es. return 4 > 10; restituirà false.

Costrutto return e istruzioni condizionali

Un uso tipico di return è in combinazione con le istruzioni condizionali e/o con un ciclo all'interno di una funzione.

Vediamo un esempio di utilizzo

<?php
function find($numbers, $find)
{
    foreach ($numbers as $number) {
        if ($number === $find) {
            return true;
        }
    }
    return false;
}

$numbers = [6, 14, 10, 15, 90, 315, 16, 2];
$find = find($numbers, 15);

if ($find) {
    echo "Numero trovato";
}

Lo script precedente chiama la funzione find() passandogli come argomenti un array di numeri e un numero da trovare. All'interno della funzione viene eseguito un ciclo tramite foreach e verificata una condizione alla riga 5. Se viene trovata una corrispondenza, l'esecuzione della funzione viene immediatamente interrotta alla riga 6, altrimenti prosegue fino alla fine del ciclo restituendo false alla riga 9.

Vediamo un altro esempio

<?php
function isLapYear($year)
{
    if ($year % 4 === 0) {
        return true;
    } else {
        return false;
    }
}

$year = 2000;

if (isLapYear($year)) {
    echo "Il $year è un anno bisestile";
}

La funzione isLapYear() verifica se un anno è bisestile oppure no ritornando rispettivamente true o false. Poiché il primo return restituisce un valore terminando subito l'esecuzione della funzione, è possibile omettere l'else successivo scrivendo direttamente return false; 

<?php
function isLapYear($year)
{
    if ($year % 4 === 0) {
        return true;
    }
    return false;
}

$year = 2000;

if (isLapYear($year)) {
    echo "Il $year è un anno bisestile";
}

Ora che abbiamo imparato a modificare il flusso di controllo di un programma attraverso le strutture di controllo, passiamo allo studio delle funzioni che abbiamo anticipato in questa guida.

Guida successiva: Funzioni PHP