Constante, o próprio nome já é meio que auto explicativa. É algo que existe constantemente, não podendo alterar o seu valor, grandeza ou magnitude. E constantes mágicas nos dizem que essas constatnes especiais nos dão o poder de executar algum artifício mágico em uma aplicação PHP. Não necessáriamente mágico, mas algo que é executado sob os olhos do programador, de maneira rápida e transparente.

O PHP oferece algumas constantes predefinidas que nós podemos usar em diversos dos nossos Scripts. Como bom programador, devemos prezar em manter um código limpo e legível, e as Constantes Mágicas podem nos ajudar a criar um código assim. PHP nos fornece oito Constantes Mágicas que eu apresentarei logo abaixo:

1. __FILE__

Exibe o caminho completo e nome do arquivo. É bastante útil para encontrar o arquivo no qual está sendo executado o script.

echo __FILE__;
// Imprime /var/www/projeto/index.php

2. __LINE__

Exibe o número atual da linha na qual a constante está. É bastante útil para depurar o código. Com isso podemos obter facilmente detalhes sobre o número de linhas em arquivos.

echo __LINE__;
// Imprime 2

3. __DIR__

Exibe o diretório atual do arquivo. Essa constatne mágica é realmente bastante útil e utilizada para nos dizer caminhos absolutos de diretórios.

echo __DIR__;
// Imprime /var/www/projeto

4. __FUNCTION__

Exibe o nome da função que está sendo executada no momento da chamada da constante, foi adicionada no PHP 4.3.0

function fun_name()
{
echo __FUNCTION__;
}

5. __CLASS__

Exibe o nome da classe onde a constante está sendo executada atualmente.

class testClass
{
public function __construct(){
echo __CLASS__;
}
}

$obj = new testClass();

6. __METHOD__

Exibe o método da classe na qual a constante está sendo executada

class testClass
{
public function fun_test(){
echo __METHOD__;
}
}

$obj = new testClass();
$obj->fun_test();
// imprime testClass::fun_test

7. __NAMESPACE__

Exibe o nome do Namespace atual, essa característica foi recém adicionada no PHP 5.3

namespace teste;

echo __NAMESPACE__;
// Imprime teste

8. __TRAIT__

E por último, mas não menos importante a Constante Mágica TRAIT que foi adicionada na versão 5.4 do PHP

class A{
public function funcA(){

}
}

trait Test_trait{
public function funcA(){
parent::funcA();
echo __TRAIT__;
}
}

class B extends A{
use Test_trait;
}

$obj = new B();
$obj->funcA();
// Imprime Test_trait

Esse código só deverá funcionar em PHP5.4, que ainda não está em uma versão estável, a versão atual ainda não implementa Traits, mas em breve escreveri um artigo explicando como esse recurso funciona. A grosso modo Traits nos dão a possibilidade de termos “heranças horizontais”.

Fonte: creativedev