O que são Funções?
Entenda o conceito de funções, por que elas são a base de um código organizado e como declarar suas primeiras funções em PHP.
Por que usar funções?
Imagine que você precisa calcular o preço com desconto em vários lugares do seu sistema. Sem funções, você copiaria o mesmo cálculo repetidamente. Com funções, você escreve uma vez e reutiliza infinitas vezes.
Funções são blocos de código com um nome, que executam uma tarefa específica quando chamados. Elas tornam o código:
- Reutilizável — escreva uma vez, use em qualquer lugar
- Organizado — cada função tem uma responsabilidade clara
- Fácil de manter — altere em um lugar, reflete em todo o sistema
- Testável — você pode testar cada função isoladamente
Don't Repeat Yourself (Não Se Repita) é um dos princípios mais importantes da programação. Funções são a principal ferramenta para aplicar esse princípio.
Sintaxe de uma função
Para declarar uma função em PHP, usamos a palavra-chave function, seguida do nome e dos parênteses:
2
3// Declaração da função
4function saudacao() {
5 echo "Olá, bem-vindo ao PHPMaster!\n";
6}
7
8// Chamada da função (pode ser chamada quantas vezes quiser)
9saudacao();
10saudacao();
11saudacao();
12
13// Saída (3x):
14// Olá, bem-vindo ao PHPMaster!
15?>
Nomes de funções são case-insensitive em PHP (minhaFuncao() e MINHAFUNCAO() são a mesma coisa), mas por boa prática use sempre camelCase ou snake_case de forma consistente.
// AMBIENTE DE CÓDIGO
// ATIVIDADE INTERATIVA
Teste seu conhecimento!
Qual palavra-chave é usada para declarar uma função em PHP?
function.Exercícios Propostos
Questões de fixação do conteúdo desta aula
Explique com suas palavras o que é uma função em PHP e cite três vantagens de usá-las em vez de repetir código.
Crie uma função chamada linha_separadora() que imprima 40 traços seguidos de uma quebra de linha. Depois, crie uma função titulo() que use linha_separadora() para formatar um cabeçalho.
O que acontece se você tentar chamar uma função antes de declará-la em PHP? E o que acontece se tentar declarar duas funções com o mesmo nome? Explique o comportamento.
Parâmetros e Argumentos
Aprenda a tornar suas funções flexíveis e reutilizáveis passando dados para elas através de parâmetros e argumentos.
Parâmetros vs Argumentos
Esses dois termos são frequentemente confundidos, mas têm significados distintos:
- Parâmetros são as variáveis listadas na declaração da função (o "molde").
- Argumentos são os valores reais passados quando a função é chamada.
2
3// $nome e $idade são PARÂMETROS
4function apresentar($nome, $idade) {
5 echo "Olá! Sou {$nome} e tenho {$idade} anos.\n";
6}
7
8// "Ana" e 25 são ARGUMENTOS
9apresentar("Ana", 25);
10apresentar("Carlos", 32);
11
12// Saída:
13// Olá! Sou Ana e tenho 25 anos.
14// Olá! Sou Carlos e tenho 32 anos.
15?>
Valores padrão (default)
Você pode definir um valor padrão para um parâmetro. Se o argumento não for passado na chamada, o valor padrão é usado automaticamente:
2
3function saudacao($nome, $lingua = "pt") {
4 if ($lingua === "pt") {
5 echo "Olá, {$nome}!\n";
6 } else {
7 echo "Hello, {$nome}!\n";
8 }
9}
10
11saudacao("Maria"); // usa padrão "pt"
12saudacao("John", "en"); // usa "en"
13?>
Parâmetros com valor padrão devem sempre vir depois dos parâmetros obrigatórios. function f($a = 1, $b) gera erro — o correto é function f($b, $a = 1).
// AMBIENTE DE CÓDIGO
// ATIVIDADE INTERATIVA
Preencha as lacunas!
Complete a declaração da função com parâmetros corretamente.
echo + $b;
}
Exercícios Propostos
Questões de fixação do conteúdo desta aula
Crie uma função imc($peso, $altura) que calcule o Índice de Massa Corporal (IMC = peso / altura²) e exiba o resultado formatado com 2 casas decimais. Chame-a com pelo menos 3 conjuntos de valores diferentes.
Crie uma função formatar_nome($nome, $maiusculo = false) que receba um nome e um parâmetro opcional. Se $maiusculo for true, exibe o nome em maiúsculas; caso contrário, exibe com a primeira letra maiúscula. Use as funções nativas strtoupper() e ucwords().
Retorno de Valores
Entenda como as funções podem devolver resultados com o return e como usar esses valores no seu programa.
A instrução return
Até agora nossas funções apenas exibiam dados com echo. Mas o mais poderoso é quando uma função calcula e devolve um valor, que pode ser usado em outras operações.
A instrução return encerra a execução da função e devolve o valor ao ponto de chamada:
2
3// Função que RETORNA um valor
4function somar($a, $b) {
5 return $a + $b;
6}
7
8// O retorno pode ser armazenado em variável
9$resultado = somar(10, 25);
10echo "10 + 25 = {$resultado}\n";
11
12// Ou usado diretamente em expressões
13echo somar(3, 4) * 2; // 14
14
15// Passado para outra função
16echo somar(somar(1,2), 3); // 6
17?>
Use echo quando quer exibir algo na tela diretamente. Use return quando quer que a função produza um valor que será usado em outro cálculo, comparação ou armazenado em variável.
Return múltiplo com array
Uma função só pode ter um return, mas você pode retornar múltiplos valores usando um array:
2
3function estatisticas($nums) {
4 return [
5 'min' => min($nums),
6 'max' => max($nums),
7 'soma' => array_sum($nums),
8 ];
9}
10
11$dados = estatisticas([4, 8, 15, 16, 23]);
12echo "Min: {$dados['min']}\n";
13echo "Max: {$dados['max']}\n";
14echo "Soma: {$dados['soma']}\n";
15?>
// AMBIENTE DE CÓDIGO
// ATIVIDADE INTERATIVA
Teste seu conhecimento!
O que acontece com o código após a instrução return dentro de uma função?
return encerra a função e devolve o valor.Exercícios Propostos
Questões de fixação do conteúdo desta aula
Crie uma função calcular_troco($valor_produto, $valor_pago) que retorne o troco. Se o valor pago for menor que o produto, retorne -1 como sinal de erro. Exiba mensagens diferentes para cada caso.
Crie uma função classificar_nota($nota) que receba uma nota de 0 a 10 e retorne a classificação: "Reprovado" (0–4), "Recuperação" (5–6), "Aprovado" (7–8) ou "Excelente" (9–10). Use ela para classificar um array de notas.
Escopo de Variáveis
Descubra onde cada variável "existe" no PHP — a diferença entre escopo local, global e o uso do global e static.
Escopo local vs global
Em PHP, variáveis declaradas fora de uma função são globais. Variáveis declaradas dentro de uma função são locais — e elas não se enxergam mutuamente por padrão:
2
3$mensagem = "Olá do escopo global!";
4
5function testar() {
6 // $mensagem NÃO existe aqui!
7 echo $mensagem; // Notice: Undefined variable
8}
9
10testar();
11echo $mensagem; // Funciona! Estamos no escopo global
12?>
Em JavaScript, variáveis globais são acessíveis dentro de funções. Em PHP, não são. Cada função tem seu próprio escopo isolado — isso é uma decisão de design intencional do PHP.
A palavra-chave global
Para acessar uma variável global dentro de uma função, use a palavra-chave global:
2
3$contador = 0;
4
5function incrementar() {
6 global $contador; // agora $contador existe aqui
7 $contador++;
8}
9
10incrementar();
11incrementar();
12incrementar();
13
14echo $contador; // 3
15?>
Evite usar global em excesso — ele cria acoplamento e dificulta testes. Prefira passar valores por parâmetros e retornar resultados. Use global apenas quando realmente necessário.
Variáveis estáticas (static)
Uma variável static mantém seu valor entre chamadas da função — ao contrário das variáveis locais, que são destruídas ao fim de cada execução:
2
3function contar_chamadas() {
4 static $vezes = 0; // inicializada só na 1ª chamada
5 $vezes++;
6 echo "Esta função foi chamada {$vezes} vez(es)\n";
7}
8
9contar_chamadas(); // 1
10contar_chamadas(); // 2
11contar_chamadas(); // 3
12?>
// AMBIENTE DE CÓDIGO
// ATIVIDADE INTERATIVA
Associe o conceito ao comportamento!
Arraste cada palavra-chave para o comportamento correto.
Exercícios Propostos
Questões de fixação do conteúdo desta aula
Explique a diferença entre uma variável local, uma variável global (acessada com global) e uma variável static. Dê um exemplo de uso prático para cada uma.
Crie uma função gerar_codigo($prefixo) que use uma variável static para gerar códigos únicos sequenciais no formato PREFIXO-001, PREFIXO-002, etc. Chame-a 5 vezes com o prefixo "PROD".
Funções Nativas do PHP
O PHP vem com centenas de funções prontas para uso. Conheça as mais importantes para strings, números, arrays e datas.
Funções de String
O PHP possui um arsenal enorme para manipular textos. As mais usadas no dia a dia:
2$texto = " Olá, PHP Master! ";
3
4echo strlen($texto); // 20 — tamanho
5echo trim($texto); // Remove espaços
6echo strtoupper($texto); // MAIÚSCULAS
7echo strtolower($texto); // minúsculas
8echo str_replace("PHP", "World", $texto); // Substituição
9echo substr($texto, 7, 3); // "PHP"
10echo strpos($texto, "PHP"); // posição de "PHP"
11echo str_repeat("* ", 5); // "* * * * * "
12?>
Funções Matemáticas e de Array
Para cálculos e manipulação de listas, o PHP oferece funções nativas prontas:
2// Matemáticas
3echo abs(-42); // 42 — valor absoluto
4echo round(4.6); // 5 — arredondamento
5echo ceil(4.1); // 5 — arredonda para cima
6echo floor(4.9); // 4 — arredonda para baixo
7echo pow(2, 10); // 1024
8echo rand(1, 100); // número aleatório
9
10// Arrays
11$nums = [3, 1, 4, 1, 5, 9];
12echo count($nums); // 6
13echo array_sum($nums); // 23
14echo max($nums); // 9
15echo min($nums); // 1
16sort($nums); // ordena: [1,1,3,4,5,9]
17?>
O PHP tem mais de 1.000 funções nativas! Consulte sempre a documentação em php.net/manual — ela está disponível em português e é a referência definitiva.
// AMBIENTE DE CÓDIGO
// ATIVIDADE INTERATIVA
Qual função nativa usar?
Você precisa remover os espaços do início e do fim de uma string em PHP. Qual função nativa usar?
trim() remove espaços, tabs e quebras de linha das extremidades.Exercícios Propostos
Desafios finais do Módulo 4
Crie uma função validar_email($email) que use a função nativa filter_var() para verificar se um e-mail é válido. Retorne true ou false e exiba uma mensagem adequada para cada caso.
Crie um mini-sistema de processamento de nomes usando apenas funções nativas do PHP. A função processar_nome($nome_bruto) deve: remover espaços extras, capitalizar cada palavra, verificar se o nome tem pelo menos 2 palavras (nome e sobrenome), e retornar um array com ['valido' => bool, 'nome_formatado' => string].