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.

Publicado em

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.

Gunnar Correa
Gunnar Correa

Autodidata, Graduado em Desenvolvimento Web, Especialista em Tecnologias na Educação e Pós-graduando em Segurança da Informação. Começou seus estudos na área de programação quando era criança, e atualmente, está estudando desenvolvimento de jogos. Fundador da SatellaSoft, criado em 2009 com o intuito de compartilhar conhecimento de forma gratuita e inédita.

Todos os nossos cursos em promoção
Todos os nossos cursos em promoção

Webstories

Todos os nossos cursos em promoção

Todos os nossos cursos em promoção

Deixe um comentário
Aguarde...
Todos os nossos cursos em promoção