Conversão de Celsius e Fahrenheit em PHP: Script com Funções

Conversão de Celsius e Fahrenheit em PHP usando Funções

Neste tutorial da nossa Apostila de PHP, vamos resolver de forma prática e elegante um dos clássicos da programação mundial: o conversor de temperaturas. Vamos aplicar nossos conhecimentos de funções para converter graus Celsius para Fahrenheit e vice-versa.

Este é o momento de colocar a mão na massa resolvendo o Exercício 01 da nossa Lista de Exercícios sobre Funções:

"Escreva um script que pergunta ao usuário se ele deseja converter uma temperatura de grau Celsius para Fahrenheit ou vice-versa. Para cada conversão, chame a função correspondente."

A Matemática da Conversão

Antes de codificar, precisamos entender as fórmulas matemáticas. Existem escalas diferentes para medir temperatura no mundo (o Brasil usa Celsius, enquanto os Estados Unidos usam Fahrenheit, por exemplo).

As fórmulas matemáticas universais de conversão são:

  • 🌡️ De Celsius para Fahrenheit: $$F=(C \times \frac{9}{5})+32$$
  • 🌡️ De Fahrenheit para Celsius: $$C=(F-32) \times \frac{5}{9}$$

A Lógica do nosso Script PHP

Nós vamos construir um pequeno formulário HTML onde o usuário digita a temperatura. Em vez de pedir para ele digitar "1" ou "2", vamos fazer um código de alto nível usando um elemento <select> para ele escolher o tipo de conversão.

No backend, o nosso PHP fará o seguinte:

  1. Verifica se o formulário foi enviado (usando isset).
  2. Captura a opção escolhida.
  3. Se escolheu "CtoF", chama a nossa função CtoF() e exibe o resultado.
  4. Se escolheu "FtoC", chama a função FtoC().

O Código Completo (HTML + PHP)

<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <title>Conversor de Temperaturas - PHP Progressivo</title>
</head>
<body style="font-family: Arial; padding: 20px;">

    <h2>Conversor de Temperatura</h2>
    
    <!-- Formulário Inteligente -->
    <form action="" method="get">
        <label>Temperatura:</label>
        <input type="number" step="0.01" name="temperatura" required />
        
        <select name="conversao">
            <option value="CtoF">Graus Celsius para Fahrenheit</option>
            <option value="FtoC">Fahrenheit para Graus Celsius</option>
        </select>
        
        <input type="submit" value="Calcular" />
    </form>

    <?php
    // Verifica se os dados foram enviados para evitar erros
    if (isset($_GET['temperatura']) && isset($_GET['conversao'])) {
        
        // Pega a temperatura e converte para decimal
        $temp = floatval($_GET['temperatura']);
        $opt = $_GET['conversao'];

        echo "<br>"; // Pula uma linha
        
        // Tratamento da Opção
        if ($opt == "CtoF") {
            $resultado = CtoF($temp);
            echo "Resultado: <strong>{$temp}°C</strong> equivalem a <strong>" . number_format($resultado, 2) . "°F</strong>.";
        } elseif ($opt == "FtoC") {
            $resultado = FtoC($temp);
            echo "Resultado: <strong>{$temp}°F</strong> equivalem a <strong>" . number_format($resultado, 2) . "°C</strong>.";
        } else {
            echo "Opção inválida.";
        }
    }

    // ==========================================
    // MINHAS FUNÇÕES (A Mágica acontece aqui!)
    // ==========================================

    function CtoF($celsius) {
        return ($celsius * 9 / 5) + 32;
    }

    function FtoC($fahrenheit) {
        return ($fahrenheit - 32) * 5 / 9;
    }
    ?>

</body>
</html>

Por que isso é tão poderoso?

Prontinho! Veja que bacana, limpo e organizado ficou o nosso script. Agora você pode, inclusive, hospedar seu site na web, pois esse sistema está funcionando perfeitamente.

A maior vantagem de ter criado Funções para isso é a reutilização de código. Imagine que você consiga um emprego de desenvolvedor em um portal de notícias meteorológicas. Você nunca mais precisará escrever essa matemática do zero!

Você pode simplesmente pegar as funções CtoF() e FtoC(), salvá-las em um arquivo chamado conversao.php, e sempre que precisar usá-las no seu sistema, basta incluir a linha require_once "conversao.php"; no topo da sua página.

Isso é o PHP em sua melhor forma! Sensacional, não acha?

Quer mais Códigos Prontos? 🚀

Esse script faz parte da nossa coleção de exercícios de lógica. Na nossa apostila oficial, você encontra centenas de scripts como esse comentados linha a linha para acelerar seu aprendizado.

Baixar Apostila Completa de PHP

13 Exercícios de Funções em PHP: Pratique sua Lógica de Programação

Lista de Exercícios Resolvidos de Funções em PHP

Programação não se aprende apenas lendo, mas sim quebrando a cabeça e escrevendo código! Chegou o momento de testarmos tudo o que você aprendeu sobre criação, invocação e retorno de Funções no PHP.

Abaixo, preparamos uma lista com 13 desafios práticos que vão desde lógicas simples até o uso de funções recursivas avançadas. Tente resolver todos no seu ambiente local antes de olhar as respostas!

💡 Dica de Ouro

Crie um arquivo chamado funcoes.php e coloque todas as funções que você criar lá dentro. Nos arquivos dos exercícios, use o comando include 'funcoes.php';. Isso já te treina para a modularização de sistemas reais!


Lista de Exercícios:

Exercício 01

Escreva um script que pergunta ao usuário se ele deseja converter uma temperatura de grau Celsius para Fahrenheit ou vice-versa. Se ele digitar 1, é de Celsius para Fahrenheit; se digitar 2, é de Fahrenheit para Celsius; se for outro valor, mostre uma mensagem de erro. Para cada conversão, chame a função correta correspondente.

→ Ver Resolução: Conversão Celsius-Fahrenheit

Exercício 02

Faça um programa que contenha uma função que receba três argumentos inteiros e retorne a soma desses três valores. Em seguida, o seu script deve fornecer a média dos três números, através de uma segunda função que invoca a primeira (função chamando função).

Exercício 03

Faça um programa que receba três números do usuário e identifique o maior número através de uma função, e o menor número através de uma outra função separada.

Exercício 04

A probabilidade de dar um valor em um dado comum é de 1/6 (uma em seis). Faça um script em PHP que simule 1 milhão de lançamentos de dados e mostre a frequência que cada número (de 1 a 6) apareceu no final da simulação.

Exercício 05

A série de Fibonacci é uma sequência de números onde os dois primeiros são 0 e 1, e o termo seguinte é sempre obtido somando os dois anteriores. Faça um script em PHP que solicite um inteiro positivo ao usuário, que chamaremos de n. Crie uma função recursiva que exiba todos os termos da sequência até o n-ésimo termo.

Exercício 06

Crie uma função que receba um inteiro positivo e teste para saber se ele é primo ou não. Faça um script que recebe um inteiro n do usuário e mostra todos os números primos existentes no intervalo de 1 até n.

Exercício 07

Um número é dito perfeito quando ele é igual à soma de seus fatores divisores. Por exemplo, os fatores de 6 são 1, 2 e 3. Como a soma (1 + 2 + 3) é igual a 6, ele é um número perfeito. Escreva uma função que receba um inteiro e diga se é perfeito ou não. Em outra parte do script, peça um inteiro n e mostre todos os números perfeitos de 1 até n.

→ Ver Resolução: Números perfeitos em PHP

Exercício 08

Use uma função que receba um valor n inteiro e imprima o seguinte padrão numérico na tela (até a n-ésima linha):

1
2   2
3   3   3
.....
n   n   n   n   n   n  ... n
Exercício 09

Use uma função que receba um valor n inteiro e imprima um padrão semelhante ao exercício anterior, mas em formato de escada sequencial:

1
1   2
1   2   3
.....
1   2   3   ...  n
Exercício 10

Faça um programa com uma função que necessite de um argumento. A função deve retornar o caractere 'P' se o seu argumento for positivo, e 'N' se o seu argumento for zero ou negativo.

Exercício 11

Faça um programa com uma função chamada somaImposto(). A função possui dois parâmetros formais: taxaImposto (que é a quantia de imposto sobre vendas expressa em porcentagem) e custo (que é o valor de um item antes do imposto). A função deve alterar e retornar o valor de custo atualizado para incluir o imposto sobre a venda.

Exercício 12

Faça um programa que converta da notação de 24 horas para a notação de 12 horas. Por exemplo, o programa deve converter 14:25 em 2:25 P.M. A entrada é dada em dois inteiros. Deve haver pelo menos duas funções: uma para fazer a conversão e uma para a saída do texto formatado. Registre a informação de período como 'A' para A.M. e 'P' para P.M. Inclua um loop (formulário contínuo) que permita que o usuário repita esse cálculo para novos valores sempre que desejar.

Exercício 13

Faça uma função matemática que informe a quantidade de dígitos de um determinado número inteiro inserido pelo usuário.

→ Ver Resolução: Quantos dígitos tem um número

Gabarito Completo na Apostila 📚

Travou em algum exercício? Não se preocupe! A resolução comentada passo a passo de TODOS esses algoritmos (e dezenas de outros) está disponível na nossa apostila oficial.

Baixar Apostila Completa de PHP

Funções Recursivas no PHP: O Guia Definitivo da Recursividade

Recursividade em PHP: Entenda Funções Recursivas Passo a Passo

Existe uma velha piada entre os programadores que diz: "Para entender a recursividade, você primeiro precisa entender a recursividade". Ao final deste tutorial do nosso Curso de PHP, você vai entender exatamente o que isso significa (e vai rir junto!).

Uma função recursiva é, nada mais, nada menos, do que uma função que invoca (chama) a si mesma de dentro do seu próprio bloco de código. É um conceito lindo, matemático e extremamente poderoso na programação.

⚠️ Cuidado com o Loop Infinito (Stack Overflow)

Obviamente, se você apenas escrever o código da função chamando a si mesma, a função de dentro chamará a si mesma, que chamará a si mesma de novo, infinitamente... até esgotar toda a memória RAM do computador ou do servidor.

Para evitar que isso aconteça, toda função recursiva deve, obrigatoriamente, ter um ponto de parada (Base Case). Isso é feito com um simples if/else. Se a condição de parada for atingida, a função para de se invocar; caso contrário, ela continua.

1. Somatório com Recursão

Seja $F(n)$ uma função matemática que representa o somatório de um número $n$. Ou seja, é a soma de todos os números até ele:

$$F(n) = 1 + 2 + 3 + 4 + \dots + (n-1) + n$$

Por exemplo:
$F(4) = 1 + 2 + 3 + 4 = 10$
$F(5) = 1 + 2 + 3 + 4 + 5 = 15$

Porém, note um padrão interessante na matemática. A soma de 5 é exatamente a soma de 4, mais 5:
$F(5) = (1 + 2 + 3 + 4) + 5 = F(4) + 5$

Isso nos dá a nossa fórmula recursiva universal: $F(n) = n + F(n-1)$

A Lógica: Vamos criar uma função somatorio(). Se o argumento for 1 (nosso ponto de parada), ela retorna 1 e o programa acaba. Se não for 1, ela retorna $n$ mais a chamada da própria função para $n-1$.

<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <title>Somatório Recursivo - PHP</title>
</head>
<body style="font-family: Arial; padding: 20px;">

    <form action="" method="get">
        Somatório de: <input type="number" name="numero" required />
        <input type="submit" value="Calcular" />
    </form>

    <?php
    if (isset($_GET['numero'])) {
        $numero = intval($_GET['numero']);
        echo "<br><strong>O somatório de {$numero} é:</strong> " . somatorio($numero);
    }

    // Função Recursiva
    function somatorio($numero) {
        // Ponto de Parada
        if ($numero == 1) {
            return 1;
        } else {
            // Chamada Recursiva
            return $numero + somatorio($numero - 1);
        }
    }
    ?>

</body>
</html>

2. Fatorial com Recursão ($n!$)

O Fatorial segue uma lógica absurdamente parecida com a do somatório, mas multiplicando. (Nós já o calculamos usando Laços de Repetição no passado).

Observe:
$5! = 5 \times 4 \times 3 \times 2 \times 1$
$6! = 6 \times (5 \times 4 \times 3 \times 2 \times 1) = 6 \times 5!$

A nossa fórmula recursiva é: $n! = n \times (n-1)!$

O nosso ponto de parada baseia-se na regra matemática universal de que $0! = 1$. Veja o código:

<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <title>Fatorial Recursivo - PHP</title>
</head>
<body style="font-family: Arial; padding: 20px;">

    <form action="" method="get">
        Fatorial de: <input type="number" name="numero" min="0" required />
        <input type="submit" value="Calcular Fatorial" />
    </form>

    <?php
    if (isset($_GET['numero'])) {
        $numero = intval($_GET['numero']);
        echo "<br><strong>O fatorial de {$numero} é:</strong> " . fat($numero);
    }

    // Função Recursiva
    function fat($numero) {
        // Ponto de Parada
        if ($numero == 0) {
            return 1;
        } else {
            // Chamada Recursiva
            return $numero * fat($numero - 1);
        }
    }
    ?>

</body>
</html>

3. Sequência de Fibonacci com Recursão

A famosa série de Fibonacci é um dos exemplos mais clássicos ensinados nas universidades para treinar recursividade. Na matemática da natureza, os primeiros termos são definidos como:

$F(0) = 0$
$F(1) = 1$

A partir daí, cada novo número é a soma dos dois anteriores. A fórmula recursiva é:
$F(n) = F(n-1) + F(n-2)$

<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <title>Fibonacci Recursivo - PHP</title>
</head>
<body style="font-family: Arial; padding: 20px;">

    <form action="" method="get">
        Exibir o Termo Fibonacci (N): <input type="number" name="numero" min="0" required />
        <input type="submit" value="Descobrir" />
    </form>

    <?php
    if (isset($_GET['numero'])) {
        $numero = intval($_GET['numero']);
        echo "<br><strong>O termo {$numero} de Fibonacci é:</strong> " . fibo($numero);
    }

    // Função Recursiva
    function fibo($numero) {
        // Pontos de Parada
        if ($numero == 0 || $numero == 1) {
            return $numero;
        } else {
            // Chamada Recursiva Dupla
            return fibo($numero - 1) + fibo($numero - 2);
        }
    }
    ?>

</body>
</html>

Domine Algoritmos no PHP 🧠

Recursividade é apenas o começo! O verdadeiro poder de um desenvolvedor está em conhecer todas as ferramentas da linguagem. Estude com centenas de exercícios práticos, gabaritados e organizados do zero ao avançado.

Baixar Apostila Completa de PHP

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:

Modularização no PHP: Como Usar include, require e Suas Variantes na Prática

Include vs Require no PHP: Qual Usar? Guia Completo

Seja bem-vindo a mais uma etapa fundamental do nosso curso de PHP. Nos tutoriais passados, escrevemos scripts simples com uma ou duas funções. Mas o mundo real do desenvolvimento não funciona assim.

Quando você for montar um sistema web corporativo, um e-commerce ou criar a lógica de um jogo no backend, você facilmente criará dezenas ou até centenas de funções. Imagine amontoar todas essas regras de negócio num único bloco de código dentro de um único arquivo .php?

Ia virar o famoso "código espaguete": impossível de ler, terrível de dar manutenção e um pesadelo para trabalhar em equipe. É por isso que precisamos aprender a incluir arquivos externos.

O que são include e require no PHP?

No PHP, as instruções include e require servem para importar o conteúdo de um arquivo para dentro de outro. A principal diferença é que o include gera um aviso (Warning) e continua rodando se o arquivo faltar, enquanto o require gera um erro fatal (Fatal Error) e trava a execução do sistema.

Na Prática: A Biblioteca de Matemática

Para manter tudo organizado, nós separamos responsabilidades. Vamos criar um arquivo isolado chamado matematica.php que servirá como uma "biblioteca" apenas para abrigar nossos cálculos.

<?php
// Arquivo: matematica.php
// Este arquivo não tem HTML, apenas lógica.

function soma($a, $b) {
    return $a + $b;
}

function sub($a, $b) {
    return $a - $b;
}

function multiplicacao($a, $b) {
    return $a * $b;
}

function divisao($a, $b) {
    // Tratamento básico de erro para evitar divisão por zero
    if ($b == 0) return "Erro: Divisão por zero";
    return $a / $b;
}
?>

Agora, no nosso arquivo principal (vamos chamá-lo de home.php), nós construímos o formulário visual e apenas "puxamos" a inteligência matemática usando o comando include.

<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <title>Sistema Calculadora - PHP Progressivo</title>
</head>
<body style="font-family: Arial; padding: 20px;">

    <h2>Painel de Cálculo</h2>
    <form action="" method="get">
        Número 1: <input type="number" step="any" name="num1" required /><br /><br />
        Número 2: <input type="number" step="any" name="num2" required /><br /><br />
        <input type="submit" name="submit" value="Calcular" style="padding: 10px; cursor: pointer;" />
    </form> 

    <?php
    // Importando nossas funções. É como se o código de 'matematica.php' fosse colado aqui!
    include "matematica.php";

    // Verifica se os dados foram enviados para evitar erros de 'Undefined Array Key'
    if (isset($_GET['num1']) && isset($_GET['num2'])) {
        
        $a = floatval($_GET['num1']);
        $b = floatval($_GET['num2']);
        
        echo "<div style='margin-top:20px; background:#f1f5f9; padding:15px;'>";
        echo "<strong>Soma:</strong> " . soma($a, $b) . "<br />";
        echo "<strong>Subtração:</strong> " . sub($a, $b) . "<br />";
        echo "<strong>Multiplicação:</strong> " . multiplicacao($a, $b) . "<br />";
        echo "<strong>Divisão:</strong> " . divisao($a, $b) . "<br />";
        echo "</div>";
    }
    ?>

</body>
</html>

E veja o resultado! Aparece a soma, subtração, multiplicação e divisão perfeitamente. Note como nossa home.php ficou limpa e focada apenas na interface (HTML) e no recebimento de dados.

💡 Dica de Mestre (Diretórios): Se o arquivo que você quer incluir estiver dentro de uma pasta (por exemplo, na pasta de um nível de um jogo), você deve apontar o caminho correto: include "level2112/level.php";. E sim, o PHP permite até incluir arquivos de servidores externos informando a URL completa, mas por questões rigorosas de segurança, a maioria dos servidores bloqueia isso nativamente.

Sua arquitetura de pastas está uma bagunça? 🏗️

No começo, jogar todos os arquivos na mesma pasta funciona. Mas quando seu projeto cresce e você precisa implementar o padrão MVC (Model, View, Controller), você precisa de uma base sólida de como a comunicação entre scripts funciona.

Acelere sua curva de aprendizado. Tenha acesso à nossa biblioteca completa de apostilas com projetos guiados!

Apostilas do Mega Pack Progressivo

O Caos da Duplicidade: Por que usar include_once?

Imagine a seguinte arquitetura num jogo ou sistema complexo:

  • Temos um arquivo A.php. Nele, damos include no B.php e no C.php.
  • Porém, lá dentro do B.php, o desenvolvedor também deu um include no C.php para usar uma função.

Você percebeu o problema? O PHP vai tentar carregar o arquivo C.php duas vezes. Na primeira, através do arquivo B. Na segunda, diretamente no arquivo A. Isso vai gerar um erro terrível informando que "a função tal já foi declarada" (Cannot redeclare function).

Para evitar essa dor de cabeça, criaram a variante include_once (incluir apenas uma vez). Com ele, o PHP verifica a memória: "Opa, eu já incluí o C.php antes? Se sim, ignora esse comando e segue a vida".

O Golpe Final: require_once (O Padrão Ouro)

Mas nós ainda temos uma falha de segurança na nossa lógica. O include e o include_once apenas tentam carregar o arquivo. Se o arquivo tiver sido deletado acidentalmente, o PHP avisa que não achou (Warning), mas continua rodando o resto do script!

Isso pode gerar falhas catastróficas. Imagine seu código tentando processar o pagamento de um cliente sem ter conseguido carregar o arquivo de segurança do cartão de crédito?

⚠️ Alerta Sênior de Arquitetura

Se um arquivo for absolutamente imprescindível para o funcionamento da página (como um arquivo de conexão com Banco de Dados, chaves de API PIX, ou configuração de LGPD), NUNCA use include. Use sempre require_once. Ele garante que o arquivo só será carregado uma vez e, se não for encontrado, ele causa um "Fatal Error", parando o servidor imediatamente e protegendo o sistema de executar lógica quebrada.

Eleve seu Código ao Nível Profissional 🚀

Chega de decorar comandos sem entender a lógica por trás. Nossa Apostila de PHP Progressivo foi desenhada para te transformar em um resolvedor de problemas. Estude offline, no seu ritmo, com dezenas de exercícios resolvidos passo a passo, totalmente livre de anúncios.

Baixar Apostila de PHP Agora

📚 Consolide seu Conhecimento

Entender a inclusão de arquivos é o primeiro passo para criar sistemas em MVC. Continue sua jornada dominando os tópicos abaixo:

Como Criar Funções em PHP: Parâmetros, Argumentos e Retorno Prático

 

Até agora, nos exemplos de nossa apostila de PHP, escrevemos blocos de códigos que rodam de forma linear. Mas no mundo real do desenvolvimento web, repetir código é um pecado capital. É aqui que entram as Funções. Nesta aula, você vai aprender a isolar blocos de lógica reaproveitáveis e dominar três conceitos fundamentais: parâmetros, argumentos e o comando de retorno (return).

Parâmetro vs. Argumento: Qual é a diferença?

Embora pareçam sinônimos, há uma diferença clara na programação: o parâmetro é a variável declarada na assinatura da função (o molde). O argumento é o dado real que você envia para dentro dessa função no momento em que a executa.

Para fixar a ideia, pense nas funções nativas que você já usou. Quando chamamos o comando print(), nós colocamos uma informação entre os parênteses:

<?php
   print("Apostila PHP Progressivo");
?>

Neste caso, "Apostila PHP Progressivo" é o argumento (o dado real) que passamos para a função, preenchendo o parâmetro (a vaga reservada) que ela espera receber.

Outro ótimo exemplo é a função matemática nativa pow(), que calcula a potência de um número. Ela necessita obrigatoriamente de dois parâmetros: a base e o expoente.

<?php
   echo "3 elevado a 4 é igual a: " . pow(3, 4);
?>

Aqui, os números 3 e 4 são os argumentos enviados para que a função execute o cálculo interno.

O que é o Retorno de uma Função?

Uma função funciona como uma máquina de processamento. Você insere a matéria-prima (argumentos), a máquina trabalha isolada e devolve o produto final. Essa devolução é o que chamamos de Retorno.

Por exemplo, por trás dos panos do PHP, a função pow(3, 4) executa laços matemáticos complexos. Quando ela termina a conta, ela gera o resultado 81 e o ejeta de volta exatamente no local onde a função foi chamada. É por isso que o comando echo consegue imprimir o resultado na tela.

Exemplo Prático 1: Criando uma Função de Soma

Vamos construir nossa própria função chamada soma(). Ela receberá duas variáveis como parâmetros ($a e $b), fará o cálculo e usará a palavra reservada return para devolver o valor final.

Veja abaixo o script completo integrado a um formulário HTML estruturado:

<html>
 <head>
  <title>Somador Dinâmico em PHP - PHP Progressivo</title>
  <style>
    body { font-family: sans-serif; padding: 20px; color: #334155; }
    .painel { background: #f8fafc; padding: 20px; border: 1px solid #e2e8f0; border-radius: 8px; max-width: 350px; }
    input[type=number] { width: 100%; padding: 6px; margin: 8px 0 15px 0; box-sizing: border-box; }
    input[type=submit] { background: #ea580c; color: white; border: none; padding: 8px 15px; border-radius: 4px; cursor: pointer; }
  </style>
 </head>
 <body>

  <div class="painel">
    <h3>Super Somador</h3>
    <form action="" method="get">
      <label>Número 1:</label>
      <input type="number" name="a" required />
      <label>Número 2:</label>
      <input type="number" name="b" required />
      <input type="submit" value="Calcular Soma" />
    </form>
  </div>
  
  <br>

 <?php
  // Só executa o código se os parâmetros via URL existirem
  if(isset($_GET['a']) && isset($_GET['b'])){
      $a = floatval($_GET['a']);
      $b = floatval($_GET['b']);
      
      // Chamando a função e passando as variáveis como argumentos
      $resultado = soma($a, $b);
      
      echo "<strong>Resultado do Processamento:</strong><br />";
      echo "A soma de $a + $b é igual a: " . $resultado;
  }

  // Declaração da nossa função customizada
  function soma($a, $b){
    $soma_interna = $a + $b;
    return $soma_interna; // Retorna o valor calculado para fora da função
  }
 ?>
 
 </body>
</html>

📚 Cansado de depender de tutoriais picados na internet?

Aprender lógica de funções sem um roteiro estruturado cria lacunas no seu conhecimento que vão cobrar o preço mais tarde em testes de entrevista. A Apostila PHP Progressivo organiza tudo em ordem cronológica de aprendizado com códigos revisados e limpos. Vale a pena ter o material de consulta definitiva salvo no seu computador.

Exemplo Prático 2: Função para Calcular Fatorial

Vamos subir o nível técnico. Lembra de quando ensinamos a calcular o fatorial com laços de repetição? Agora vamos encapsular toda aquela lógica dentro de uma função reaproveitável chamada fat().

<html>
 <head>
  <title>Calculadora de Fatorial Funcional - PHP Progressivo</title>
  <style>
    body { font-family: sans-serif; padding: 20px; color: #334155; }
    .bloco-fatorial { background: #f0fdf4; padding: 20px; border: 1px solid #bbf7d0; border-radius: 8px; max-width: 350px; }
    input[type=number] { width: 100%; padding: 6px; margin: 8px 0 15px 0; }
    input[type=submit] { background: #16a34a; color: white; border: none; padding: 8px 15px; border-radius: 4px; cursor: pointer; }
  </style>
 </head>
 <body>

  <div class="bloco-fatorial">
    <h3>Cálculo de Fatorial</h3>
    <form action="" method="get">
      <label>Calcular o fatorial de:</label>
      <input type="number" name="number" min="0" required />
      <input type="submit" value="Calcular" />
    </form>
  </div>
  
  <br>

 <?php
  if(isset($_GET['number'])){
      $n = intval($_GET['number']);
      
      // Chamando a função e exibindo seu retorno diretamente na tela
      echo "<h4>O fatorial de $n é: " . fat($n) . "</h4>";
  }
  
  // Função que encapsula o laço while de cálculo matemático
  function fat($n){
   $fatorial = 1;
   $count = 1;
     
   while($count <= $n){
     $fatorial *= $count;
     $count++;
   } 
   
   return $fatorial; // Retorna o valor acumulado final
  }
 ?::
 </body>
</html>

🚀 Invista no seu Futuro como Programador Web

"Entender a diferença entre parâmetros e o fluxo do return mudou meu jogo. Parei de copiar códigos e comecei a desenhar arquiteturas simples em PHP de cabeça graças a esse material explicativo."
— Mariana Costa, Analista de Sistemas.

Tenha em mãos o guia definitivo em PDF com toda a lógica explicada, diagramas conceituais e gabarito completo para estudo focado offline.

Apostila Completa de PHP PDF Download
Baixar Apostila Completa em PDF 📥

📚 Próximos Passos de Estudo:

Para solidificar sua base e entender como manipular esses escopos de forma avançada, leia estas aulas:

  • ENTENDENDO O ESCOPO DAS FUNCOES - Descubra o isolamento de variáveis dentro da função.
  • PASSAGEM POR REFERENCIA PHP - Aprenda a alterar variáveis externas usando o operador &.
  • Voltar para o Índice do Curso de PHP

Quer acelerar o aprendizado em múltiplas linguagens?

Leve o pacote com todos os cursos completos: PHP, Java, C, JavaScript, HTML e CSS.

Baixar Mega Pack de Apostilas de Programação

Dominando Variáveis Globais no PHP: Escopo, Segurança e o Array $GLOBALS

Dominando Variáveis Globais no PHP: Escopo, Segurança e o Array $GLOBALS

Seja bem-vindo a mais um tutorial de peso da nossa jornada. Na aula passada sobre escopo de funções no PHP, vimos que as funções são como cofres trancados: elas não sabem o que acontece do lado de fora, a não ser que você passe as informações via parâmetros (argumentos).

Mas e se você precisar de uma informação vital que deve estar disponível para todo o seu sistema? Uma configuração de banco de dados, uma taxa de imposto de um e-commerce ou uma chave de API corporativa? É aqui que entram as variáveis de escopo global.

O que são Variáveis Globais no PHP?

Variáveis globais no PHP são aquelas declaradas fora de funções e que podem ser acessadas de qualquer lugar do script. Para manipulá-las dentro do escopo local, utilizamos a instrução global $variavel ou o array superglobal $GLOBALS['variavel'].

Existem basicamente duas maneiras profissionais de informar ao PHP que uma função deve "puxar" um dado lá de fora. Vamos analisar ambas com cenários do mundo real.

1. Usando a instrução global

A forma mais direta de acessar uma variável global dentro de uma função é declarando-a com a palavra-chave global logo no início do bloco de código da função.

Imagine que você está desenvolvendo o backend de um e-commerce e tem uma taxa de desconto padrão de 10% para a Black Friday. Em vez de passar essa taxa repetidamente por parâmetro em dezenas de funções de carrinho de compras, você faz isso:

<?php
// Declaramos a variável no escopo global (fora de qualquer função)
$descontoBlackFriday = 0.10; // 10% de desconto

function calcularPrecoComDesconto($precoProduto) {
    // Trazemos a variável externa para dentro da função
    global $descontoBlackFriday;
    
    $valorDesconto = $precoProduto * $descontoBlackFriday;
    return $precoProduto - $valorDesconto;
}

echo "Preço original: R$ 1000.00 <br>";
echo "Preço final: R$ " . calcularPrecoComDesconto(1000);
// Saída: Preço final: R$ 900
?>

Travando com Lógica de Programação e Escopos? 🤯

Eu sei que entender como a memória do computador lida com variáveis pode dar um nó na cabeça de quem está começando. A internet está cheia de tutoriais rasos que te deixam mais confuso do que antes.

"Eu sempre me perdia no escopo das funções e meu código nunca rodava. O passo a passo das apostilas destravou minha mente, foi como ligar um interruptor!"
— Carlos Oliveira, hoje Desenvolvedor Pleno.

Que tal ter o mapa completo do zero ao avançado, organizado e offline?

Mega Pack Todas as Apostilas Programação

2. O Array Superglobal $GLOBALS

O PHP já nos entrega uma ferramenta de fábrica maravilhosa: os Arrays Superglobais. O $GLOBALS é um array associativo que contém todas as variáveis disponíveis no escopo global do seu script.

O nome da variável vira a chave (índice) desse array. A grande vantagem é que você não precisa usar a palavra global antes.

💡 Dica de Mestre: Essa técnica é frequentemente lida em integrações corporativas para puxar tokens de API ou chaves de segurança geradas dinamicamente no início da aplicação.
<?php
// Token de Autenticação da API (simulado)
$apiToken = "ab123_xyz987_token_secreto";

function conectarNaApiBancaria() {
    // Acessando diretamente pelo array $GLOBALS
    $tokenDeAcesso = $GLOBALS['apiToken'];
    
    return "Conectado com sucesso usando o token: " . $tokenDeAcesso;
}

echo conectarNaApiBancaria();
?>

⚠️ Alerta Sênior: Cuidado com o Código Espaguete!

O poder de acessar qualquer variável em qualquer lugar é sedutor, mas perigoso. Se um hacker ou um bug alterar uma variável global, todo o sistema quebra de forma imprevisível (o que chamamos de Mutação de Estado Indesejada). Em arquiteturas modernas como Laravel ou Symfony, evitamos variáveis globais em favor de técnicas como Injeção de Dependências e o padrão Singleton. Use com moderação!

Domine o PHP do Zero ao Avançado 🚀

Pare de pular de vídeo em vídeo e ficar catando código solto na internet. Tenha todo o conteúdo progressivo na palma da mão, organizado, com exercícios com gabarito. Estude offline de onde quiser, sem propagandas interrompendo seu fluxo de raciocínio.

Baixar Apostila de PHP Agora

Exemplo Prático: Calculadora de Circunferência e Área

Para não deixar o artigo só na teoria, vamos criar um sistema completo. Teremos um formulário HTML onde o usuário digita o Raio de um círculo, e nosso script PHP processa a informação.

Usaremos uma variável global para armazenar o valor constante de Pi ($pi = 3.14). Veja como o frontend (HTML) e o backend (PHP) se comunicam em um mesmo arquivo limpo:

<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <title>Calculadora de Raio PHP</title>
    <style>
        /* Um pouco de CSS para não deixar o formulário feio */
        body { font-family: Arial, sans-serif; padding: 20px; }
        input[type="number"], input[type="submit"] { padding: 8px; margin: 5px 0; }
        .resultado { background: #e0f2fe; padding: 15px; margin-top: 15px; border-radius: 5px; }
    </style>
</head>
<body>

    <h2>Calculadora de Circunferência</h2>
    
    <form action="" method="get">
        <label for="raio">Digite o Raio:</label><br>
        <input type="number" step="0.01" name="raio" id="raio" required><br>
        <input type="submit" value="Calcular">
    </form>

    <?php
    // Verifica se o usuário enviou o formulário pela URL (GET)
    if (isset($_GET['raio'])) {
        
        // 1. Nossa Variável Global
        $pi = 3.14159; 
        
        // Recebe o dado do usuário
        $raioUsuario = floatval($_GET['raio']);

        // Função 1: Usa a instrução 'global'
        function comprimento($raio) {
            global $pi;
            return 2 * $pi * $raio;
        }

        // Função 2: Usa o array '$GLOBALS'
        function area($raio) {
            return $GLOBALS['pi'] * ($raio * $raio); // PI * r²
        }

        // Exibição dos resultados
        echo "<div class='resultado'>";
        echo "<strong>Raio informado:</strong> {$raioUsuario}<br>";
        echo "<strong>Comprimento:</strong> " . number_format(comprimento($raioUsuario), 2) . "<br>";
        echo "<strong>Área:</strong> " . number_format(area($raioUsuario), 2);
        echo "</div>";
    }
    ?>

</body>
</html>

📚 Consolide seu Conhecimento

A programação é uma escada. Para dominar completamente o que vimos hoje, sugerimos que você devore as seguintes aulas do nosso ecossistema: