Valores podem ser retornados utilizando a instrução opcional return. Qualquer tipo pode ser retornado, incluindo arrays e objetos. Isto faz com que as função termine sua execução imediatamente e passa o controle de volta para a linha de onde ela foi chamada. Veja a documentação da função return para maiores informações.
Nota:
Se return for omitido então o valor
NULL
será retornado.
Exemplo #1 O uso de return
<?php
function quadrado ($num)
{
return $num * $num;
}
echo quadrado (4); // imprime '16'.
?>
Você não pode retornar múltiplos valores a partir de uma função, mas resultados similares podem ser obtidos retornando um array.
Exemplo #2 Retornando um array para devolver vários valores
<?php
function numeros_pequenos()
{
return array (0, 1, 2);
}
list ($zero, $um, $dois) = numeros_pequenos();
?>
Para retornar uma referência de uma função, use o operador de referência & em ambas a declaração da função e quando definindo o valor para a variável.
Exemplo #3 Retornando uma referência de uma função
<?php
function &retorna_referencia()
{
return $alguma_referencia;
}
$nova_referencia =& retorna_referencia();
?>
Para mais detalhes sobre referências, leia a seção Referências.
O PHP 7 acrescenta suporte a declaração de tipo de retorno. Similar à declaração de tipagem de argumentos, declaração de tipo de retorno especifica o tipo do valor que será retornado de uma função. Os mesmos tipos que estão disponíveis para declaração de argumentos estão disponíveis para tipagem de retornos.
A tipagem estrita também afeta a tipagem de retorno. No modo padrão (tripagem fraca) o valores retornados serão convertidos para o tipo correto caso não enquadrem no tipo informado. No modo de tipagem forte os valores retornados precisam ser o tipo correto ou uma exceção TypeError será lançada.
Nota:
Quando sobrescrevendo um método, o novo método precisa concidir com a tipagem de retorno do método anterior. Se o método sobrescrito não define uma tipagem de tipo, então o novo método precisa espelhar isso.
Exemplo #4 Declaração de tipo de retorno
<?php
function sum($a, $b): float {
return $a + $b;
}
// Note que um float será retornado.
var_dump(sum(1, 2));
?>
O exemplo acima irá imprimir:
float(3)
Exemplo #5 Modo estrito em ação
<?php
declare(strict_types=1);
function sum($a, $b): int {
return $a + $b;
}
var_dump(sum(1, 2));
var_dump(sum(1, 2.5));
?>
O exemplo acima irá imprimir:
int(3) Fatal error: Uncaught TypeError: Return value of sum() must be of the type integer, float returned in - on line 5 in -:5 Stack trace: #0 -(9): sum(1, 2.5) #1 {main} thrown in - on line 5
Exemplo #6 Returning an object
<?php
class C {}
function getC(): C {
return new C;
}
var_dump(getC());
?>
O exemplo acima irá imprimir:
object(C)#1 (0) { }