Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Função Callback
  2. Retorno mixed
  3. União de tipos em retorno de função
  4. Vetor/matriz de funções
  5. Função como parâmetro/argumento e retorno
  6. Uso de void
  7. Retornando mais um valor utiliando objeto

Funções são "pedaços" de programas que são criados para organização, manutenção e reuso. Nesta parte do tutorial, vamos aprender a criar funções, funções com parâmetros entre outros.

Procedimentos são semelhantes a funções, mas ao término de suas execuções nenhum valor é retornado.

Procedimentos em PHP, são funçoes que não retornam nenhum tipo de valor ao término de sua execução.

Sintaxe
function nome_procedimento()
{
  //corpo procedimento
}
Onde
function: palavra reservada para identificar uma função/procedimento

Para invocar um procedimento, utilizamo seu próprio nome no local desejado.

Exemplo 1
<?php
function procedimento(){
    echo "procedimento";
}
procedimento();
?>
Saída
procedimento

Função, diferente de procedimento, retornam um valor durante ou ao seu fim a sua execução. Qualquer tipo de dado estudado podem ser utilizado como retorno, além das classes nativas e criadas pelo usuário.

Sintaxe
function nome_funcao()
{
  //corpo função
  return valor;
}
Onde
return: Comando para retornar um valor

Para invocar uma função, utilizamo seu próprio nome no local desejado.

Exemplo 2
<?php
function funcao()
{
    return "funcao";
}
echo funcao();
?>
Saída
funcao

O uso do comando return pode aparecer mais de uma vez ao longo do corpo da função. Isso acontece quando utilizamos condições de retorno com uso dos comandos de decisão.

Para que uma função possa receber argumentos, precisamos declarar parâmetros separados por (,). Internamente, os parâmetros são cópias dos argumentos. Esses cópias são destruídas ao fim da execução da função.

Sintaxe
function nome_funcao($param1, $param2, $paramN)
{
  //corpo função
  return valor;
}
Onde
param1..N: parâmetros recebidos pela função
Exemplo 3
<?php
  function funcao($param1, $param2){
    echo $param1,"\t",$param2;
  }
  funcao(1,"teste");
?>

Em PHP, a tipagem dos parâmetros não precisa ser informada como é feito em outras linguagens. Porém, a partir da versão 7, foi adicionada a possibilidade de adição do tipo de dado nos parâmetros. Para isso, precisamos adicionar a declaração strict como abaixo:

Sintaxe: Uso de strict
declare(strict_types=1);
Sintaxe: Retorno tipado
function nome_funcao($param1, $param2, $paramN) : tipo_retorno
{
  //corpo função
  return valor;
}
Onde
tipo_retorno: Tipo de dado de retorno
Exemplo 4
<?php
  declare(strict_types=1);
  
  function funcao(string $param1, string $param2) : string {
    return  $param1."\t".$param2;
  }
  echo funcao("teste","teste");
?>
Saída
teste	teste

PHP permite que possamos utilizar valor padrão em parâmetros de forma que esses se tornem opcionais. Nesse caso, o parâmetro opcional deve ser o último parâmetro declarado.

Sintaxe
function nome_funcao($param1, $param2 = valor_padrão){
//corpo
}
Exemplo 5
<?php
  function funcao( $param1, $param2 = 1){
    echo $param1/$param2;
  }
  funcao(2);
?>
Saída
2

Nos exemplos de funções acima, os argumentos foram passados por valor. Dessa forma, uma cópia da variável é armazenada em um parâmetro que será descartado ao final da execução da função.

Sintaxe
$nome_parametro
Exemplo 6
<?php
  declare(strict_types=1);
  
  function funcao(int $param1){
    echo $param1,"\n";
    $param = 20; 
  }
  
  $a= 10;
  funcao($a);
  echo $a;
?>
Saída
10
10

A passagem por referência é feita utilizando o operador (&) que significa o endereço ou referência de alguma coisa. Utilizado esse operador, qualquer alteração feita no conteúdo do parâmetro irá refletir diretamente no valor do argumento informado.

Sintaxe
&$nome_parametro
Exemplo 7
<?php
  declare(strict_types=1);
  
  function funcao(int &$param1){
    $b = &$param1; //recuperando referência de a;
    $b = 100; //acessando a indiretamente
  }
  
  $a= 10;
  echo $a,"\n";
  funcao($a);
  echo $a;
?>
Saída
10
100

PHP, assim como outras linguagens, possibilita que uma função tenha inúmeros argumentos variáveis. Como exemplo, temos a função printf que aceita um número variável de argumentos.

Sintaxe
printf(string $format, mixed ...$values): int

Para que possamos declarar funções informando que essa irá suporta um número variável de argumentos, utilizamos o operador (...) antes do nome do parâmetro declarado, como na sintaxe abaixo:

Sintaxe
function nome_funcao(tipo_dado ...$nome_param) : tipo_retorno
{
//omitido
}

Quando utilizamos (...) os parâmetros ficam armazenados internamente em um vetor/array e precisamos percorrer esse array utilizando algum comando de repetição.

Exemplo 8
<?php
  function funcao(...$params) {
    foreach($params as $val)
    {
      echo $val;
    }
  }
  
  funcao(1,"teste",3.99,4);
?>
Saída
1teste3.994

Por padrão, a linguagem PHP não permite declarar uma função para retornar mais de um valor. Porém, para contornar esse problema, podemos utilizar array para armazenar os valores de retorno e a função list para atribuir esses retornos à variáveis.

Sintaxe
list(mixed $var, mixed ...$vars = ?): array
Onde
$var: variável
$vars: variáveis separadas por (,)
Exemplo 9
<?php
function funcao() {
    return [4,"teste",1.99];
}

list($var1,$var2,$var3) = funcao();
echo $var1,$var2,$var3;
?>
Saída
4teste1.99

Existem uma outra forma para atingir esse objetivo de retornar múltiplos valores que é utilizando um objeto. Em POO, o assunto Objeto será estudado em Classe.

  1. 21/08/2025 - revisão 3 - Ajustes: pontuais, sintaxes e targets de links
  2. 21/09/2024 - revisão 2 - Ajustes gramaticais; correção em numeração de exemplos; outros ajustes
  3. 05/02/2024 - revisão 1 - correção em navegação, css e erros gramaticais
  4. 20/09/2023 - versão inicial