Funções Chamando Funções no PHP: Como Invocar e Modularizar Lógicas

Funções no PHP: Como Uma Função Pode Invocar Outra

Em nossa jornada pelo Curso de PHP, já aprendemos a criar funções isoladas para realizar tarefas específicas. Mas você sabia que as funções podem trabalhar em equipe? Uma das técnicas mais poderosas e comuns na programação é uma função invocar (chamar) outra função dentro dela.

Isso permite que você quebre problemas complexos em pedacinhos minúsculos e fáceis de resolver, criando um código muito mais limpo e profissional.

1. Invocando Funções Nativas do PHP

Antes de criarmos nossas próprias interações complexas, vamos ver como invocar funções que já vêm embutidas no PHP. Vamos criar um script que recebe o raio de um círculo via formulário e calcula sua área.

A fórmula da área é: Área = PI * Raio². Para isso, nossa função area() vai invocar duas funções matemáticas nativas do PHP: pi() e pow() (potenciação).

<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <title>Área do Círculo - PHP Progressivo</title>
</head>
<body style="font-family: Arial; padding: 20px;">

    <form action="" method="get">
        Raio: <input type="number" step="any" name="raio" required />
        <input type="submit" value="Calcular" />
    </form>

    <?php
    if (isset($_GET['raio'])) {
        $raioUsuario = floatval($_GET['raio']);
        
        echo "<br><strong>A área é:</strong> " . number_format(area($raioUsuario), 2);
    }

    // Nossa função personalizada invocando duas nativas
    function area($raio) {
        // pi() retorna 3.14159...
        // pow($raio, 2) eleva o raio ao quadrado
        return pi() * pow($raio, 2);
    }
    ?>

</body>
</html>

2. Função Customizada invocando Função Customizada

Agora vamos ao mundo real. Crie um script que receba os 3 coeficientes (a, b, c) de uma Equação do 2º Grau e classifique as raízes dela.

Para isso ficar organizado, usaremos duas funções feitas por nós:

  • delta(): Recebe os coeficientes e faz o cálculo puro do Delta (b² - 4ac).
  • equacao(): Recebe os coeficientes, invoca a função delta(), recebe a resposta dela e usa o resultado para classificar a equação com if/else.
<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <title>Calculadora de Equações</title>
</head>
<body style="font-family: Arial; padding: 20px;">

    <form action="" method="get">
        A: <input type="number" name="a" required /><br><br>
        B: <input type="number" name="b" required /><br><br>
        C: <input type="number" name="c" required /><br><br>
        <input type="submit" value="Analisar Equação" />
    </form>

    <?php
    if (isset($_GET['a']) && isset($_GET['b']) && isset($_GET['c'])) {
        $a = floatval($_GET['a']);
        $b = floatval($_GET['b']);
        $c = floatval($_GET['c']);
        
        echo "<br><strong>Resultado:</strong> " . equacao($a, $b, $c);
    }

    // Função Principal
    function equacao($a, $b, $c) {
        
        // Verificação Básica
        if ($a == 0) {
            return "Não é uma equação do 2º grau (A não pode ser zero).";
        }
        
        // A função invoca a função delta() aqui e guarda o valor!
        $valorDelta = delta($a, $b, $c);
        
        if ($valorDelta == 0) {
            return "A equação possui duas raízes reais e IGUAIS.";
        } elseif ($valorDelta > 0) {
            return "A equação possui duas raízes reais e DISTINTAS.";
        } else {
            return "A equação possui raízes IMAGINÁRIAS (Delta negativo).";
        }
    }

    // Função Auxiliar que foi chamada lá em cima
    function delta($a, $b, $c) {
        return ($b * $b) - (4 * $a * $c);
    }
    ?>

</body>
</html>

🛠️ Como o PHP sabe onde está a função delta()?

Note que a função delta() foi escrita depois da função equacao(). Em algumas linguagens antigas, isso daria erro. Mas o interpretador do PHP é inteligente: ele faz uma "varredura" lendo todas as funções do arquivo antes de começar a executá-las de fato. Portanto, a ordem em que você escreve suas funções não importa!

⚠️ Atenção Sênior: Cuidado com a Performance!

É possível usar a função diretamente dentro do if sem criar uma variável, fazendo algo como:

elseif(delta($a,$b,$c) > 0)

Porém, evite fazer isso! Se você chamar delta() em cada linha de if/elseif, o servidor terá que refazer a conta matemática várias vezes. Ao salvar a resposta numa variável $valorDelta = delta(...), o cálculo é feito apenas uma vez, economizando processamento da sua máquina. Essa é a marca de um programador profissional.

Destrave sua Lógica de Programação 🧠

Entender o fluxo de funções chamando funções é o que separa os amadores dos desenvolvedores plenos. Quer dominar isso com dezenas de exercícios práticos, gabaritados e organizados do zero ao avançado?

Baixar Apostila Completa de PHP

📚 Consolide seu Conhecimento

A técnica que aprendemos hoje é o aquecimento perfeito para um dos conceitos mais fascinantes e temidos da computação: a recursão. Continue estudando:

Nenhum comentário: