Programação · Ensino médio · aula 5 de 5 · ~2 min de leitura
Funções em PHP
Como criar funções, declarar os tipos do que entra e do que sai, e por que isso evita erros.
Esta aula ainda aguarda revisão da comunidade. Achou um erro? Sugira uma correção.
Definir e chamar
<?php
function saudacao(string $nome): void
{
echo "Bom dia, $nome!\n";
}
saudacao("Marta");
saudacao("João");
functioncria a função;string $nomeé um parâmetro, com o tipo declarado;: voidavisa que a função não devolve nada (ela só mostra algo).
A função só é executada quando é chamada, o que aqui acontece duas vezes.
Devolvendo um resultado
return entrega o valor a quem chamou. A partir daí ele pode ser guardado, somado, comparado:
<?php
function area_retangulo(float $largura, float $altura): float
{
return $largura * $altura;
}
$sala = area_retangulo(4, 5);
$quarto = area_retangulo(3, 3);
echo "Área total: ", $sala + $quarto, " m²\n";
Regra prática: função que calcula devolve com return; quem decide o que mostrar na tela é o código que a chamou.
Por que declarar os tipos
O PHP não obriga a declarar tipos, mas vale a pena. Com eles, um engano aparece na hora, com uma mensagem clara, em vez de produzir um resultado errado em silêncio:
<?php
function dobro(int $n): int
{
return $n * 2;
}
echo dobro(21), "\n";
echo dobro("abc");
A segunda chamada é interrompida com um TypeError: a função esperava um número inteiro e recebeu um texto.
O que mostra echo dobro(dobro(3)); usando a função acima?
Valor padrão
<?php
function preco_final(float $valor, float $desconto = 0): float
{
return $valor - $valor * $desconto / 100;
}
echo preco_final(200), "\n";
echo preco_final(200, 10), "\n";
Se o segundo valor não for informado, vale o padrão (zero).
Escopo: cada função na sua mesa
Diferente de outras linguagens, uma função em PHP não enxerga as variáveis de fora:
<?php
$taxa = 10;
function com_taxa(float $valor, float $taxa): float
{
return $valor + $valor * $taxa / 100;
}
echo com_taxa(50, $taxa);
O valor de $taxa entra na função porque foi passado como parâmetro. É o jeito certo: a função deixa claro tudo de que precisa.
Um exemplo completo
<?php
function media(array $valores): float
{
return array_sum($valores) / count($valores);
}
function situacao(float $nota): string
{
return $nota >= 6 ? "aprovado" : "recuperação";
}
$notas = [7.5, 4.0, 6.5];
$m = media($notas);
echo "Média ", number_format($m, 1, ","), ": ", situacao($m), "\n";
Cada função faz uma coisa só e tem um nome que explica o que é.
Para praticar
- Escreva
eh_par(int $n): bool. - Escreva
maior(float $a, float $b): floatsem usarmax. - Escreva
formata_reais(float $valor): string, que devolve o valor no formatoR$ 1.234,50.
Teste o que você aprendeu
1. Qual palavra cria uma função em PHP?
2. Na declaração function area(float $l, float $a): float, o que significa o último float?
3. Uma variável criada fora da função pode ser usada dentro dela, sem mais nada?
Fontes desta aula
- The PHP Group. Manual do PHP: tipos.
- The PHP Group. Manual do PHP: um tutorial simples.