Curso de PHP: Funções - PARTE IV - Variável estática e o retorno de uma função
Uma função pode retornar algum valor EXPLÍCITO, o que é o que acontece na maioria das vezes. Nós indicamos para a função o que retornar, podendo ser uma variável, ou algum dado qualquer. Se não indicarmos o que ela deve retornar, automaticamente será retornado valor null.
E assim como os parâmetros, há formas diferentes de retornar um valor de uma função.
Explicarei também sobre as variáveis estáticas, que são variáveis que retém o valor, mesmo após o final da execução de uma função.
Normalmente, a variável que é criada dentro de uma função é considerada volátil, pois, cada vez que a função é chamada, todas as variáveis são inicializadas novamente. Exemplo:
<?php
function teste() {
$contador = 0;
$contador++;
echo $contador . '<br />';
}
teste();
teste();No código acima, será exibido o número 1 duas vezes. Porquê? Na função teste, iniciamos a variável $contador com o número 0. Depois incrementamos essa variável e exibimos o resultado. Na primeira execução o resultado é 1. Quando chamamos novamente, todo o processo é feito novamente e obtemos o mesmo resultado.
Com as variáveis estáticas iremos observar um comportamento diferente, onde a variável será criada na primeira vez que chamarmos uma função, e seu valor será mantido nas próximas chamadas. Ou seja, ela não será iniciada várias vezes. Exemplo:
<?php
function teste() {
static $contador = 0;
$contador++;
echo $contador . '<br />';
}
teste();
teste();
A única coisa que mudou no código acima foi que adicionamos a palavra static antes de inicializar a variável. Se você executar o código, será impresso 1 e 2.
Para entender: A primeira vez que chamamos a função, o php cria uma variável estática chamada $contador. O valor da variável é incrementado e depois impresso. Na segunda vez que chamamos a função, o PHP entende que a variável $contador é uma variável estática, e ao invés de iniciar $contador novamente com zero, o PHP restaura o valor da chamada anterior, ou seja, 1, depois incrementa a variável e imprime novamente. Quantas vezes for chamada a função teste, o valor de $contador sempre será restaurado.
Retorno da Função
Para retornar um valor de uma função, utilizamos a instrução return. Quando o return é encontrado, o PHP pára de executar o restante da função, e retorna o que estiver á frente da palavra return, para o lugar onde ela foi chamada. Exemplo:
<?php
function conceito($nota) {
if ($nota == 10) {
$conc = 'Excelente';
} elseif ($nota >=6) {
$conc = 'Bom';
} else {
$conc = 'Ruim';
}
return $conc;
echo 'Essa linha nunca será impressa';
}
echo conceito(7);O código acima irá escrever 'Bom', mas não irá escrever 'Essa linha nunca será impressa' porquê a instrução echo está após a instrução return.
Você pode ter vários return em uma mesma função, mas apenas um deles vai funcionar, e nesse momento a sua função para de ser executada. Para ter sentido em ter vários return em sua função, eles precisam ser condicionais, ou seja, depender de uma condição, e para isso utilizamos as estruturas condicionais. Exemplo:
<?php
function conceito($nota) {
if ($nota == 10) {
return 'Excelente';
} elseif ($nota >=6) {
return 'Bom';
} else {
return 'Ruim';
}
echo 'Essa linha nunca será impressa';
}
echo conceito(7);
O resultado da função será o mesmo. A diferença é que estamos usando o return dentro do if, e assim que o return ser executado o que estiver a seguir dentro da função não será executado.
Retornando uma referência
Assim como podemos passar a referência de uma variável como parâmetro, podemos retornar uma referência como retorno de uma função. Para isso, utilizamos o operador & na declaração da função. Exemplo:
<?php
function & teste() {
$teste = "Variavel";
echo '<pre>' . var_dump($teste) . '</pre>';
return $teste;
}
$outra = teste();
var_dump($outra);
O uso do retorno de variável por referência é muito mais comum quando o retorno é um objeto, o qual não precisa do operador & no PHP 5, pois, os objetos são sempre passados por referência.
Este foi o capítulo final sobre funções. Faça uso racional delas. É preciso saber bem seu conceito para fazer uso correto dos demais recursos que o PHP proporciona.
- Login to post comments




