Por que eu devo ler este artigo:Uma função é uma pequena rotina nomeada que permite que um certo algoritmo seja reutilizado pela aplicação, garantindo que seu código não será duplicado e que a sua manutenção será feita em apenas um lugar.

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;

}
Código 1. Exemplo de declaração de função

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];

}
Código 2. Sintaxe de uma 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.

Nota: Por convenção, as funções no PHP são nomeadas com letras minúsculas.

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);
Código 3. Exemplo de passagem de argumentos por valor

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.

Nota: Sempre que o valor do parâmetro for alterado o valor da variável externa será alterado e assim vice-versa.

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;
Código 4. Exemplo de passagem de argumentos por referência
  • 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();
Código 5. Exemplo de passagem de argumentos por valor padrão
  • 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;

}
Código 6. Exemplo de função que não retorna um valor
  • 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){

  $opercacao = $num_1 / $num_2;

  return $operacao;

}
Código 7. Exemplo de função que retorna valor

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.

Nota: Caso return for omitido então o valor NULL será retornado.

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);
Código 8. Exemplo de chamada da função

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 ().

Nota: O uso () é a forma de indicar que esse elemento é uma função.

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;

}
Código 9. Exemplo de uso variável global

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);
Código 10. Declaração de variável fora do escopo da função

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;

Código 11. Operação utilizando variável dentro do escopo da função

Na linha 14 é definida uma operação entre as variáveis $num_1 e $num_3 sendo que $num_3 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_3 como declarada, já que ela é um parâmetro da função.

Nota: Os parâmetros da função nunca podem ser variáveis ​​globais.

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.

Confira também