Constantes e inclusões

Constantes são valores que nunca mudam. Senhas de bancos de dados, chaves de API, nomes de sites — qualquer dado que permaneça o mesmo durante toda a execução do seu programa deve ser uma constante, e não uma variável. Esta lição também ensina como dividir seu código em vários arquivos usando include e require.

1. define() x const

O PHP oferece duas maneiras de declarar constantes:

PHP
<?php
// define() — declared at runtime (can be used anywhere)
define("SITE_NAME", "My Blog");
define("MAX_UPLOAD_SIZE", 5 * 1024 * 1024);  // 5MB
define("DB_HOST", "localhost");

// const — declared at compile time (global scope only)
const APP_VERSION = "2.0.0";
const PI = 3.14159;

echo SITE_NAME;      // My Blog (note: no $ prefix)
echo APP_VERSION;    // 2.0.0
?>
define() const
Onde Em qualquer lugar (dentro de funções/condições) Apenas no escopo global
Tempo Tempo de execução Tempo de compilação (um pouco mais rápido)
Matrizes ✅ PHP 7+ ✅ PHP 5.6+
Expressões ❌ Apenas valores simples
Ideal para Configuração, definições condicionais Constantes de classe
💡 Dica: Na maioria dos casos, opte por const — é um pouco mais rápido e fica mais claro. Use define() apenas quando precisar de um valor calculado dinamicamente ou precisar definir uma constante dentro de uma função ou bloco condicional.

(1) Convenção de nomenclatura

As constantes devem ser escritas em letras maiúsculas com sublinhados (SCREAMING_SNAKE_CASE):

PHP
<?php
const MAX_LOGIN_ATTEMPTS = 5;
const DEFAULT_LANGUAGE = "en-US";
const API_BASE_URL = "https://api.example.com/v1";
?>

(2) Verificando se uma constante existe

PHP
<?php
if (!defined("SITE_NAME")) {
    define("SITE_NAME", "Default Site Name");
}
// defined() checks whether a constant is already set
?>

2. Constantes mágicas

O PHP oferece um conjunto de “constantes mágicas” cujos valores mudam automaticamente dependendo de onde são utilizadas:

PHP
<?php
// Assume the file path is: C:\xampp\htdocs\myphp\demo.php

echo __LINE__;       // Current line number: 7
echo __FILE__;       // Full file path: C:\xampp\htdocs\myphp\demo.php
echo __DIR__;        // Directory of the file: C:\xampp\htdocs\myphp
echo __FUNCTION__;   // Current function name (inside a function)
echo __CLASS__;      // Current class name (inside a class)
echo __METHOD__;     // Current method name (inside a method)
echo __NAMESPACE__;  // Current namespace
?>

▶ Exemplo: Caminhos confiáveis com __DIR__

PHP
<?php
// ❌ Fragile relative path
$config = include "config.php";

// ✅ Always resolves to the correct absolute path
$config = include __DIR__ . "/config.php";
$avatar = __DIR__ . "/uploads/avatars/" . $userId . ".jpg";
?>
▶ Experimente
💡 Dica: __DIR__ é a constante mágica que você mais usará no dia a dia do desenvolvimento. Sempre use __DIR__ para construir caminhos em seus arquivos de inclusão — isso garante que o arquivo seja encontrado, independentemente do diretório de onde o script for chamado.


3. include x require

Divida seu código em vários arquivos e importe-os usando include ou require:

PHP
<?php
// config.php
const DB_HOST = "localhost";
const DB_NAME = "myapp";
?>
PHP
<?php
// index.php
require __DIR__ . "/config.php";

echo "Database host: " . DB_HOST;  // Constants are now available
?>
include require
Arquivo não encontrado ⚠️ Aviso, o script continua 🔴 Erro fatal, o script é interrompido
Reutilização Pode ser incluído várias vezes Pode ser incluído várias vezes
Ideal para Conteúdo opcional Configurações essenciais, bibliotecas de funções
💡 Dica: Aqui vai uma regra simples — use require por padrão. Se um arquivo de configuração ou uma biblioteca de funções estiver faltando, seu script deve parar imediatamente, em vez de continuar funcionando com a lógica prejudicada. Reserve include para elementos realmente opcionais, como banners publicitários ou trechos de análise.

(1) include_once e require_once

Evite que o mesmo arquivo seja carregado mais de uma vez:

PHP
<?php
require_once __DIR__ . "/config.php";
require_once __DIR__ . "/config.php";  // Second call does nothing
?>
💡 Dica: Use require_once para arquivos que definem funções ou classes (redefinir essas funções ou classes causaria um erro fatal). Use simplesmente require para fragmentos de modelo HTML que você possa incluir várias vezes intencionalmente.


4. Constantes predefinidas

O PHP vem com várias constantes globais integradas:

PHP
<?php
echo PHP_VERSION;        // 8.2.7
echo PHP_INT_MAX;        // 9223372036854775807 (64-bit)
echo PHP_INT_MIN;        // -9223372036854775808
echo PHP_FLOAT_MAX;      // 1.7976931348623E+308
echo PHP_EOL;            // Line break (\n or \r\n depending on OS)
echo DIRECTORY_SEPARATOR; // \ (Windows) or / (Unix)
echo PATH_SEPARATOR;      // ; (Windows) or : (Unix)
?>

Elas são especialmente úteis para escrever código multiplataforma.


5. Desenvolvimento modular na prática

Organize seu site em vários arquivos interligados por meio de require:

TEXT
myphp/
├── config.php      ← Database config, constants
├── functions.php   ← Shared functions
├── header.php      ← Page header HTML
├── footer.php      ← Page footer HTML
├── index.php       ← Home page
└── about.php       ← About page

▶ Exemplo: Uma página modular

PHP
<?php
// header.php
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title><?= $pageTitle ?? "My Website" ?></title>
</head>
<body>
<header>
    <h1><?= SITE_NAME ?></h1>
    <nav>
        <a href="/">Home</a>
        <a href="about.php">About</a>
    </nav>
</header>
<main>
▶ Experimente
PHP
<?php
// footer.php
?>
</main>
<footer>
    <p>&copy; <?= date("Y") ?> <?= SITE_NAME ?></p>
</footer>
</body>
</html>
PHP
<?php
// about.php
define("SITE_NAME", "My Blog");
$pageTitle = "About Us";

require __DIR__ . "/header.php";
?>
<h2>About Us</h2>
<p>We're a team passionate about technology.</p>
<?php
require __DIR__ . "/footer.php";
?>
💡 Dica: Essa abordagem modular é o padrão de design original do PHP. Quando você vier a aprender Laravel, vai perceber que as diretivas @include, @extends e @section do Blade são a evolução moderna exatamente dessa ideia.

❓ Perguntas Frequentes

P: Devo usar const ou define()? R: Use const para constantes globais simples — é mais rápido e mais claro. Use define() quando precisar de um valor calculado em tempo de execução ou precisar definir dentro de uma condição ou função. Dentro de uma classe, apenas const funciona.

P: include ou require — qual deles? R: O padrão é require. A falta de arquivos de configuração e bibliotecas de funções deve gerar um erro imediato. Os casos em que se usa include são raros — trata-se de conteúdo opcional, como anúncios ou trechos de análise, em que a página deve continuar funcionando mesmo sem eles.

P: Por que require falha, mesmo que o arquivo definitivamente exista? R: Em 99% dos casos, trata-se de um problema de caminho. Faça a depuração com echo __DIR__ . "/config.php" para confirmar o caminho completo que está sendo construído. Lembre-se de que os caminhos relativos são relativos ao diretório de trabalho atual, e não ao diretório do script — é por isso que __DIR__ é a maneira mais segura de construir caminhos.

📖 Resumo

📝 Exercícios

  1. Crie um arquivo config.php que defina constantes para o nome do site, o host do banco de dados e o caminho do diretório de upload. Em seguida, chame esse arquivo require a partir de outra página PHP e use as constantes para exibir sua configuração.
  2. Divida uma página do blog em header.php, footer.php e index.php. Use __DIR__ para criar todas as referências de caminho em suas instruções require.
  3. Escreva um código que utilize defined() para verificar se uma constante foi definida e, caso não tenha sido, defina um valor padrão.
Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%