Oii Michael,
Parabéns pela implementação do desafio. Gostei muito de ver que você utilizou a estrutura while com uma variável de controle ($continuar), essa é uma lógica muito comum e eficiente para criar menus de repetição.
O seu código tá funcional e bem legível, especialmente pelo uso da interpolação de strings (o uso das chaves {$variavel}), que deixa o texto muito mais limpo do que ficar concatenando com pontos.
Tenho duas sugestões para levar seu código para o próximo nível, focando na segurança dos dados:
1. Verificação de Saldo:
No momento, na opção 2 (Saque), o sistema permite que o usuário saque um valor maior do que ele possui na conta, o que deixaria o saldo negativo. Seria interessante adicionar um if para verificar isso antes de subtrair o valor.
2. Tipagem de Dados:
Quando usamos fgets, o PHP recebe o dado como uma "string" (texto). Embora o PHP consiga fazer contas com textos numéricos, uma boa prática é converter explicitamente para número (float ou int), garantindo que não haja erros de cálculo.
Veja como ficaria essa adaptação no trecho do saque:
} elseif ($opcao == 2) {
echo "Qual valor pretende sacar? \n";
// convertendo para float para garantir que é um número decimal
$saque = (float) trim(fgets(STDIN));
if ($saque > $saldo) {
echo "Saldo insuficiente para realizar essa operação.\n";
} else {
$saldo -= $saque; // Mesma coisa que: $saldo = $saldo - $saque;
echo "\n Boa tarde, Sr. {$titular}. Saque de R$ {$saque} realizado. Saldo atual: R$ {$saldo}. \n";
}
}
Essa pequena validação aproxima muito o seu exercício de um cenário real de banco. Continue praticando essas variações lógicas, você está no caminho certo.
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!