Dominando o uso de constantes no PHP

Constantes representam uma maneira confiável de garantir que os dados permaneçam inalterados ao longo da execução e desenvolvimento do projeto.

PHP Moderno: Criando uma aplicação com área administrativa

Constantes são uma forma de assegurar que valores definidos a um tipo especial de “variável” não sejam alterados durante o projeto, garantindo a integridade das informações. Caso o desenvolvedor tente alterar o seu valor um erro ocorrerá. A ideia é garantir a imutabilidade dos dados.

Assim como podemos criar as nossas próprias constantes, o PHP também fornece algumas constantes pré-definidas e outras chamadas de constantes mágicas. Também podemos definir constantes no escopo de uma classe durante a programação orientada a objetos.

Imagine um arquivo simples de PHP que deva exibir os dias da semana de forma numérica, utilizando variáveis podemos fazer da seguinte forma:

<?php

$domingo  = 0;
$segunda  = 1;

echo $segunda;

Você certamente já sabe trabalhar com variáveis, então sabe também que podemos mudar o valor da variável $segunda sem maiores dificuldades. Ainda no exemplo acima, a gente pode mudar o valor de qualquer variável, trocando em outras partes do projeto o valor de $segunda para uma string ou booleano.

Vamos ver agora como usar na prática as constantes, ainda no contexto do sistema de exibir os dias da semana.

<?php

define('DOMINGO', 0);
define('SEGUNDA', 1);

echo SEGUNDA;

Perceba que para criar uma constante utilizamos uma função chamada define, passando no primeiro parâmetro o nome da constante e no segundo o seu valor. Para imprimir o seu valor, basta chamar o nome da constante.

Quando usamos constantes não usamos o sinal de $ como fazemos com as variáveis. Por conversão, utilizamos o nome escrito na maiúscula separando as palavras por underline (_).

Constantes mágicas

Constantes mágicas no PHP são valores predefinidos que mudam de acordo com o contexto do código. Exemplos incluem __LINE__ (número da linha), __FILE__ (caminho do arquivo), e __DIR__ (diretório do arquivo). Elas fornecem informações dinâmicas durante a execução do script.

Vamos usar, por exemplo, o uso da constante mágica __DIR__, incluindo ela dentro do arquivo app/file.php e ver o valor que será impresso na tela.

<?php

echo __DIR__;

//Saída: E:PHP/Projeto/app

De acordo com o PHP existem nove constantes mágicas e você pode aprender mais sobre elas em https://www.php.net/manual/pt_BR/language.constants.magic.php.

Constantes pré-definidas

Constantes pré-definidas no PHP são valores globais disponíveis em qualquer parte do código. Exemplos incluem PHP_VERSION (versão do PHP), PHP_OS (sistema operacional), e PHP_INT_MAX (valor máximo para inteiros). Essas constantes oferecem informações estáticas sobre o ambiente de execução.

Existe constantes que só estão disponíveis quando determinadas bibliotecas forem importadas, ou seja, além das disponíveis no escopo global do projeto, existem outras que podem ser importadas. Bibliotecas como Guzzle também oferecem suas próprias constantes para o desenvolvimento utilizando a sua biblioteca.

<?php

echo PHP_VERSION;

//PHP_VERSION

Constantes em classes

Podemos ainda declarar constantes dentro de uma classe, ao invés de usar o define, basta usar a palavra reservada const. Observe no código abaixo que a regra para o uso de constante em classes se mantém conforme a gente já abordou aqui: Escritas em maiúsculas e palavras separadas por underline.

<?php

class MyTest
{
    const FULL_NAME = 'Gunnar Correa';

    public function getName(): string
    {
        return self::FULL_NAME;
    }
}

//Chama a nossa função que retorna a constante
echo (new MyTest())->getName();

Constantes tipadas no PHP 8.3

No PHP 8.3 foi incluído o uso de tipagem para a declaração de constantes, ou seja, é possível definir se a constante vai receber um inteiro, string ou booleano, por exemplo.

<?php

class Foo{
    const string PHP = 'Bar';
}

Leia mais em: https://wiki.php.net/rfc/typed_class_constants.