Uma função é um bloco de código nomeado que executa uma tarefa específica, possivelmente processando um conjunto de valores fornecidos a ela e/ou retornando algum valor.
Guia do artigo:
Por exemplo, considere que você está trabalhando num sistema em que é necessário somar dois números. Caso essa operação seja realizada repetidas vezes dentro código, então ela pode ser implementada dentro de uma função que será invocada sempre que for necessário realizar a soma.
Veja no Código 1 o exemplo de uma declaração de função.
function soma($num_1, $num_2){
$total = $num_1 + $num_2;
return $total;
}
No Código 1 vemos a estrutura da função utilizando os comandos do PHP, declaração de variáveis, uma operação e o retorno do seu resultado. Entenderemos cada pedaço a seguir.
Sintaxe
A sintaxe geral de uma função no PHP é apresentada no Código 2.
function [nome_função]([parâmetro_1],[parâmetro_2],...,[parâmetro_n]){
//Código
return [retorno_função];
}
Um função é declarada pela palavra reservada function seguida do nome da função, como vemos na linha 1 do Código 2. Para nomear uma função usamos qualquer sequência de caracteres que comece com uma letra ou sublinhado.
O PHP não diferencia letras maiúsculas de minúsculas para o nome de funções, ou seja, você pode chamar a função soma() como: soma(), SOMA(), SomA() e todos serão reconhecidos como a mesma função.
O PHP suporta três formas de passagem de argumentos, são elas: por valor (o padrão), referência e valores padrões de argumentos.
Parâmetros da função por valor
Consiste na passagem de valores para os parâmetros definidos na função. Podemos analisar no Código 3 como realizar a passagem por valor.
/*Declaração da função soma
e os parâmetros $num_1 e $num_2*/
function soma($num_1,$num_2){
$total = $num_1 + $num_2;
return $total;
}
//definido os valores para as variáveis
echo soma(5,3);
Na linha 12 do Código 3 é passado os valores 5 e 3 para os parâmetros $num_1 e $num_2, respectivamente. Ao executar a função será retornado e impresso o valor da soma com o valores definidos.
Parâmetros da função por referência
A passagem de argumentos por referência é quando um parâmetro da função recebe uma referência para uma variável externa a função. Para que o parâmetro definido receba a referência é necessário inserir o & (E comercial) antes dele.
Veja no Código 4 como é realizada a passagem de argumentos por referência:
//Criada a referência em $num_1
function referencia(&$num_1){
$num_1 *= 5;
//retorno o valor de $num_1 * 5
return $num_1;
}
$num_2 = 3;
//Execução da função
referencia($num_2);
echo $num_2;
- Linha 2 vemos que foi criada uma referência em $num_1 que irá receber o valor de $num_2.
- Linha 4 o valor de $num_1 é alterado pela operação de atribuição.
- Linha 7 será retornado o valor final de $num_1.
- Linha 14 a função é executada passando como referência a variável $num_2 para a variável $num_1.
- Linha 15 será impresso o valor 15 com final da execução da função;
Parâmetros da função por valor padrão
Essa forma de passagem de argumentos consiste em definir no momento da declaração da função quais serão os valores dos seus parâmetros. Veja no Código 5 sua estrutura:
/*Declaração da função passagem_padrao
e do parâmetro $num_1 já com seu valor definido*/
function passagem_padrao($num_1 = 15){
return $num_1;
}
//Será impresso o retorno da função - 15
echo passagem_padrao();
- Linha 3 o parâmetro $num_1 é declarado com valor 15.
- Linha 5 $num_1 será o valor de retorno da função.
- Linha 10 ao executar a função o valor definido ao parâmetro será retornado e impresso.
Retorno da função
Ao escrever uma função é necessário especificar se ela retornará um valor ou não.
Veremos no Código 6 uma função chamada dividir que realiza a divisão entre duas variáveis e imprime o resultado dessa operação.
function dividir($num_1, $num_2){
$operacao = $num_1 / $num_2;
echo $operacao;
}
- Na linha 1 é declarada uma função com o nome dividir com os parâmetros $num_1 e $num_2
- Na linha 3 $operacao recebe o resultado da divisão entre as variáveis $num_1 e $num_2
- Na linha 5 o comando echo imprimirá o valor de $operacao
No Código 6 não é retornado um valor com a execução da função, mas sim impresso o valor da divisão entre as variáveis.
Para que seja possível que a função dividir() retorne algum valor é necessário alterá-la inserindo a instrução return. Veja no Código 7 um exemplo disso.
function dividir($num_1, $num_2){
$operacao = $num_1 / $num_2;
return $operacao;
}
Veja que no Código 7 apenas foi alterada a instrução echo para return, diferenciando os comportamentos após a execução: no Código 6 será exibido o valor do resultado da operação aritmética, diferente do Código 7, que apenas retorna esse valor.
return é uma palavra reservada do PHP que nesse contexto tem como finalidade retornar um valor encerrando a função.
Chamada da função
A chamada da função consiste em utilizar a sintaxe nome_função(); para que o PHP interprete qual função queremos executar. Veremos no Código 8 como realizar esta chamada.
function dividir($num_1, $num_2){
$opercacao = $num_1 / $num_2;
return $operacao;
}
//Chamada da função
echo dividir(8,4);
Na linha 10, após o comando echo é realizada a chamada da função dividir passando os valores 8 e 4, por meio da sintaxe do seu nome mais os (). Assim o PHP interpreta que esta é a função a ser executada e assim imprimir o seu valor.
Sempre que for necessário executar e retornar o conteúdo da função utilizamos fora do seu escopo o seu nome seguido de ().
Escopo de variáveis
Numa função podemos utilizar variáveis para realizar operações ou mesmo armazenar determinado valor para ser exibido ou retornado por ela. Para tornar uma variável externa acessível numa função podemos utilizar a palavra reservada global seguido do nome da variável externa. Veja sua sintaxe no Código 9.
$num_1 = 15;
function exemplo($num_2){
global $num_1;
$operacao = $num_1 + $num_2;
return $operacao;
}
Caso não seja feita esta declaração o PHP não irá reconhecer as variáveis declaradas externas a função, retornando um erro. Veja no Código 10 o exemplo.
$num_1 = 15;
function exemplo($num_2){
$operacao= $num_1 / $num_2;
return $operacao;
}
//Retorna erro
echo exemplo(5);
O PHP também reconhece como erro se tentarmos utilizar uma variável declarada dentro do escopo da função numa operação externa a função, como vemos no Código 11.
function exemplo($num_1, $num_2){
$operacao = $num_1 + $num_2;
return $operacao;
}
exemplo(4,6);
$num_3 = 10;
$operacao_2 = $num_1 + $num_3;
echo $operacao_2;
Na linha 12 é definida uma operação entre as variáveis $num_1 e $num_3 sendo que $num_1 faz parte do escopo da função exemplo(). Desta forma será retornado um erro ao tentar imprimir resultado desta operação pois o PHP não irá reconhecer como a variável $num_1 como declarada, já que ela é um parâmetro da função.
Então neste artigo vimos que as funções aprimoram a confiabilidade do código, permitindo corrigir os bugs em um só lugar, em vez de diferentes locais dentro no código, além de melhorar a legibilidade, isolando o código que executa tarefas específicas.