Guia Completo de Funções em PHP: Declaração, Parâmetros e Retorno Já leu

Declaração de Funções em PHP Uma função em PHP é um bloco de código reutilizável que executa uma tarefa específica. Ela reduz duplicação, melhora legibilidade e facilita manutenção. A declaração básica usa a palavra-chave , seguida pelo nome e parênteses. Nomes de funções devem ser descritivos, começar com letra ou underscore, e seguir a convenção camelCase ou snakecase. PHP não diferencia maiúsculas de minúsculas em nomes de funções, mas é boa prática manter consistência. Funções podem ser declaradas em qualquer lugar do script e chamadas após sua definição ou até mesmo antes (PHP faz parsing completo primeiro). Parâmetros e Argumentos Parâmetros Obrigatórios e Opcionais Parâmetros são variáveis recebidas pela função. Você pode definir valores padrão, tornando-os opcionais. Argumentos são os valores passados na chamada da função. Parâmetros com valores padrão devem estar sempre após parâmetros obrigatórios. Se você tentar inverter essa ordem, PHP lançará um erro fatal. Type Hints e Validação Type hints garantem que apenas tipos específicos sejam aceitos,

Declaração de Funções em PHP

Uma função em PHP é um bloco de código reutilizável que executa uma tarefa específica. Ela reduz duplicação, melhora legibilidade e facilita manutenção. A declaração básica usa a palavra-chave function, seguida pelo nome e parênteses.

function saudar() {
    echo "Olá, mundo!";
}

saudar(); // Saída: Olá, mundo!

Nomes de funções devem ser descritivos, começar com letra ou underscore, e seguir a convenção camelCase ou snake_case. PHP não diferencia maiúsculas de minúsculas em nomes de funções, mas é boa prática manter consistência. Funções podem ser declaradas em qualquer lugar do script e chamadas após sua definição ou até mesmo antes (PHP faz parsing completo primeiro).

Parâmetros e Argumentos

Parâmetros Obrigatórios e Opcionais

Parâmetros são variáveis recebidas pela função. Você pode definir valores padrão, tornando-os opcionais. Argumentos são os valores passados na chamada da função.

function calcularDesconto($preco, $percentual = 10) {
    $desconto = $preco * ($percentual / 100);
    return $preco - $desconto;
}

echo calcularDesconto(100);      // Usa percentual padrão: 90
echo calcularDesconto(100, 20);  // Usa percentual 20: 80

Parâmetros com valores padrão devem estar sempre após parâmetros obrigatórios. Se você tentar inverter essa ordem, PHP lançará um erro fatal.

Type Hints e Validação

Type hints garantem que apenas tipos específicos sejam aceitos, aumentando a segurança do código. A partir do PHP 7, é possível declarar tipos explicitamente.

function somar(int $a, int $b): int {
    return $a + $b;
}

echo somar(5, 3);        // 8
echo somar(5.7, 3.2);    // 8 (valores float são convertidos)
// somar("5", "3");      // Funciona: strings numéricas são convertidas

O modo strict (declare(strict_types=1)) força type coercion rigorosa no início do arquivo. Você também pode usar type hints para objetos, arrays e interfaces, criando código mais robusto e autodocumentado.

Parâmetros por Referência

Por padrão, PHP passa parâmetros por valor (cópia). Com referência (&), a função modifica a variável original.

function incrementar(&$numero) {
    $numero++;
}

$x = 5;
incrementar($x);
echo $x; // 6 — a variável original foi modificada

Use referências com cautela, pois podem dificultar o rastreamento de mudanças. Preferencialmente, retorne o novo valor em vez de usar referências.

Retorno de Valores

Return e Tipos de Retorno

A instrução return encerra a função e devolve um valor ao chamador. Funções sem return explícito retornam null.

function obterIdade($anoNascimento) {
    $anoAtual = date('Y');
    return $anoAtual - $anoNascimento;
}

$idade = obterIdade(1990);
echo $idade; // Número correspondente ao ano atual menos 1990

Type hints para retorno melhoram clareza. Combine com parâmetros tipados para máxima robustez:

function processar(string $nome, int $idade): string {
    if ($idade < 18) {
        return "Menor de idade";
    }
    return "Bem-vindo, $nome!";
}

echo processar("Ana", 25); // Bem-vindo, Ana!

Retornando Múltiplos Valores

Quando precisa retornar múltiplos valores, use arrays ou objetos. A desestruturação de arrays (PHP 7.1+) torna isso elegante.

function dividirnome($nomeCompleto) {
    $partes = explode(" ", $nomeCompleto);
    return [
        'primeiro' => $partes[0] ?? '',
        'ultimo' => end($partes) ?? ''
    ];
}

['primeiro' => $f, 'ultimo' => $u] = dividirnome("João Silva");
echo "$f - $u"; // João - Silva

Alternativamente, retorne um objeto para melhor legibilidade em estruturas complexas:

function validarEmail($email): object {
    $valido = filter_var($email, FILTER_VALIDATE_EMAIL);
    return (object)[
        'valido' => (bool)$valido,
        'mensagem' => $valido ? 'Email válido' : 'Email inválido'
    ];
}

$resultado = validarEmail("usuario@exemplo.com");
echo $resultado->mensagem; // Email válido

Funções Avançadas

Argumentos Variáveis

Use ... (splat operator) para aceitar número indefinido de argumentos:

function somar(...$numeros) {
    return array_sum($numeros);
}

echo somar(1, 2, 3, 4, 5); // 15
echo somar(10, 20);        // 30

Funções Anônimas e Arrow Functions

Funções anônimas são úteis em callbacks. Arrow functions (PHP 7.4+) oferecem sintaxe mais concisa:

$nomes = ['Ana', 'Bruno', 'Carlos'];

// Anônima
$maiusculas = array_map(function($nome) {
    return strtoupper($nome);
}, $nomes);

// Arrow function
$maiusculas = array_map(fn($nome) => strtoupper($nome), $nomes);

print_r($maiusculas); // [ANA, BRUNO, CARLOS]

Arrow functions capturam automaticamente variáveis do escopo pai, enquanto funções anônimas exigem use().

Conclusão

Dominar funções em PHP é essencial para escrever código limpo e manutenível. Retenha: (1) declare funções com nomes descritivos e use type hints para clareza; (2) parametrize adequadamente, aproveitando valores padrão e referências quando apropriado; (3) retorne valores explicitamente e considere devolver arrays ou objetos para dados complexos. Com esses fundamentos, você construirá aplicações profissionais e escaláveis.

Referências


Artigos relacionados