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.
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:
return
.return
verrà ignorata.Inoltre
return;
return 4 > 10;
restituirà false
.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.