Médio PHP
Função com argumentos nomeados e valor padrão
Enunciado
Crie uma função formatarProduto que recebe o nome do produto, o preço e uma moeda (padrão 'R$'). A função deve retornar uma string formatada como "[nome]: [moeda] [preço]", com o preço formatado com duas casas decimais. Use argumentos nomeados na chamada para inverter a ordem dos parâmetros ou omitir a moeda.
Requisitos
- A função deve se chamar
formatarProdutoe ter três parâmetros:$nome(string),$preco(float) e$moeda(string, padrão'R$'). - Deve retornar a string no formato
"Nome: R$ 10.50"(preço com duas casas decimais, usandonumber_format). - Na chamada, use argumentos nomeados para passar
precoenomefora de ordem e para omitir a moeda.
Código inicial
<?php
// Complete a função formatarProduto
function formatarProduto(string $nome, float $preco, string $moeda = 'R$'): string {
// seu código aqui
}
// Testes
echo formatarProduto(preco: 19.9, nome: 'Caneta') . PHP_EOL;
echo formatarProduto(nome: 'Caderno', preco: 12.5, moeda: 'US$') . PHP_EOL;
Saída esperada
Caneta: R$ 19.90
Caderno: US$ 12.50
Ver dica
Use number_format($preco, 2, '.', '') para formatar o preço. Na chamada, use nome: e preco: para argumentos nomeados.
Mostrar solução
<?php
declare(strict_types=1);
function formatarProduto(string $nome, float $preco, string $moeda = 'R$'): string {
$precoFormatado = number_format($preco, 2, '.', '');
return "$nome: $moeda $precoFormatado";
}
echo formatarProduto(preco: 19.9, nome: 'Caneta') . PHP_EOL;
echo formatarProduto(nome: 'Caderno', preco: 12.5, moeda: 'US$') . PHP_EOL;
Passo a passo
- Declaramos a função
formatarProdutocom$nome,$precoe$moeda(padrão'R$'). - Dentro da função, usamos
number_format($preco, 2, '.', '')para formatar o preço com duas casas decimais, ponto como separador decimal e sem separador de milhar. - Retornamos a string interpolada com nome, moeda e preço formatado.
- Na primeira chamada, usamos argumentos nomeados
preco:enome:para inverter a ordem; a moeda é omitida e assume o padrão'R$'. - Na segunda chamada, passamos todos os argumentos nomeados, incluindo
moeda: 'US$'. - Exibimos os resultados com
echoePHP_EOL.
Por que funciona
Argumentos nomeados permitem associar cada valor ao parâmetro correspondente, independentemente da ordem. Isso é útil quando a função tem muitos parâmetros opcionais ou quando queremos deixar claro o significado de cada valor. O valor padrão de $moeda é usado quando o argumento não é fornecido.
Erros comuns
- Esquecer o
declare(strict_types=1): sem isso, o PHP pode converter tipos automaticamente, mascarando erros. Solução: incluir no topo do arquivo. - Passar argumentos posicionais após nomeados:
formatarProduto(nome: 'X', 10.0)gera erro fatal. Solução: use todos nomeados ou todos posicionais. - Usar
number_formatsem o terceiro e quarto parâmetros: o padrão usa vírgula como separador decimal (dependendo da localidade). Solução: especificar'.'e''explicitamente.
Outra forma de resolver
Sem argumentos nomeados, usando a ordem padrão:
echo formatarProduto('Caneta', 19.9) . PHP_EOL;
echo formatarProduto('Caderno', 12.5, 'US$') . PHP_EOL;
Prefira argumentos nomeados para maior clareza, especialmente com muitos parâmetros.
Saída esperada
Caneta: R$ 19.90
Caderno: US$ 12.50