Constantes Mágicas PHP

O PHP nos oferece algumas constantes predefinidas que podem ser utilizadas em qualquer lugar da aplicação. Essas constantes são chamadas de constantes mágicas.

Elas são chamadas de constantes mágicas porque o seu valor muda dependendo de onde elas são utilizadas, isso se deve ao fato, de que, elas obtêm o valor de onde elas estão no script, por exemplo, a constante mágica __LINE__ vai retornar a linha do código onde essa constante foi escrita.

Essas constantes são case-insentitive, ou seja, tanto faz escrever __LINE__ como __line__ irá funcionar.

Até a data de escrita desse artigo, o PHP nos disponibiliza 9 constantes mágicas, a seguir um descrição de cada uma:

__LINE__

Obtém o número da linha do código onde é escrita a constante.


echo __LINE__;
// Resultado: 70

__FILE__

O caminho completo e o nome do arquivo com links simbólicos resolvidos. Se utilizado dentro de um include, o nome do arquivo incluído será retornado.


echo __FILE__;
// Resultado: /var/www/html/controller/articleController.php

__DIR__

O caminho do diretório onde é utilizada a constante. Se usado dentro de um include, o diretório do arquivo incluído será retornado.


echo __DIR__;
// Resultado: /var/www/html/controller

__FUNCTION__

O nome da função onde é utilizada a constante.


function carregaFoto()
{
    echo 'O nome da minha função é ' . __FUNCTION__; 
}

carregaFoto();
// Resultado: O nome da minha função é carregaFoto

__CLASS__

O nome da classe onde é utilizada a constante, isso inclui o namespace caso seja utilizado.


class Pessoa 
{
    public function getNome()
    {
        echo 'O nome da minha classe ' . __CLASS__;
    }
}

$pessoa = new Pessoa();
$pessoa->getNome();
// Resultado: O nome da minha classe é Pessoa

__TRAIT__

O nome da trait onde é utilizada a constante, isso inclui o namespace caso seja utilizado.


trait Pessoa
{
    public function getTipoPessoa()
    {
        echo 'O nome da minha trait é ' . __TRAIT__;
    }
}

class Fisica 
{
    use Pessoa;
}

$pessoa = new Fisica();
$pessoa->getTipoPessoa();
// Resultado: O nome da minha trait é Pessoa

__METHOD__

O nome do método onde é utilizado a constante.


class Pessoa
{
    public function getNome()
    {
        echo 'O nome do método é ' . __METHOD__;
    }
}

$pessoa = new Pessoa();
$pessoa->getNome();
// Resultado: O nome do método é Pessoa::getNome

__NAMESPACE__

O nome do namespace onde é utilizado a constante.


namespace model

class Pessoa
{
    public function getNome()
    {
        echo 'O nome da namespace é ' . __NAMESPACE__;
    }
}

$pessoa = new modelPessoa();
$pessoa->getNome();
// Resultado: O nome da namespace é model

::class

Obtém o nome da classe, porém, é chamado da mesma forma que métodos e atributos static, sem precisar instanciar a classe.


class Pessoa 
{
   
}

echo 'O nome da classe é ' . Pessoa::class;
// Resultado: O nome da classe é Pessoa

Referência: https://www.php.net/manual/pt_BR/language.constants.predefined.php

Voltar para o topo