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
