PHP fornece um grande número de constantes predefinidas para qualquer script executado.
No entanto, muitas constantes são definidas por diferentes bibliotecas de extensão e só aparecerão quando essas bibliotecas de extensão forem carregadas, sejam carregadas dinamicamente ou incluídas em tempo de compilação.
Existem oito constantes mágicas cujos valores mudam dependendo de sua localização no código.
Por exemplo, o valor de __LINE__ depende da linha em que está localizado no script. Essas constantes especiais não diferenciam maiúsculas de minúsculas e são as seguintes:
O número da linha atual no arquivo.
<?php eco ' Este é o número da linha " ' . __LINE__ . ' " ;
O resultado de saída do exemplo acima é:
Esta é a linha "2"
O caminho completo e o nome do arquivo. Se usado em um arquivo incluído, retorna o nome do arquivo incluído.
Desde o PHP 4.0.2, __FILE__ sempre contém um caminho absoluto (ou o caminho absoluto resolvido no caso de um link simbólico), enquanto versões anteriores às vezes continham um caminho relativo.
Exemplo:
<?php eco ' O arquivo está localizado em " ' . __FILE__ . ' " ' ? >
O resultado de saída do exemplo acima é:
O arquivo está localizado em "E:wampwwwtestindex.php"
O diretório onde o arquivo está localizado. Se usado em um arquivo incluído, retorna o diretório onde o arquivo incluído está localizado.
É equivalente a dirname(__FILE__). Os nomes de diretório não incluem a barra final, a menos que sejam o diretório raiz. (Novo no PHP 5.3.0)
<?php eco ' O arquivo está localizado em " ' . __DIR__ . ' " ' ? >
O resultado de saída do exemplo acima é:
O arquivo está localizado em " E:wampwwwtest "
Nome da função (novo no PHP 4.3.0). Desde o PHP 5 esta constante retorna o nome da função quando ela foi definida (sensível a maiúsculas e minúsculas). No PHP 4 esse valor é sempre minúsculo.
<?php função teste ( ) { eco ' Nome da função : ' __FUNCTION__ ; teste ( ) ? >
O resultado de saída do exemplo acima é:
Nome da função: teste
O nome da classe (novo no PHP 4.3.0). Desde o PHP 5 esta constante retorna o nome da classe quando ela foi definida (sensível a maiúsculas e minúsculas).
No PHP 4 esse valor é sempre minúsculo. O nome da classe inclui o escopo no qual ela é declarada (por exemplo, FooBar). Observe que desde o PHP 5.4 __CLASS__ também funciona para traits. Quando usado em um método trait, __CLASS__ é o nome da classe que chama o método trait.
<?php aula teste { função _imprimir ( ) { eco ' Nome da classe : ' __CLASS__ . ' Nome da função : ' __FUNCTION__ ; } $t = novo teste ( ) ; $t -> _imprimir ( ) ? >
O resultado de saída do exemplo acima é:
Nome da classe: test Nome da função: _print
O nome do trait (novo no PHP 5.4.0). Desde o PHP 5.4.0, o PHP implementou um método de reutilização de código chamado traits.
O nome do trait inclui o escopo no qual ele é declarado (por exemplo, FooBar).
Os membros herdados da classe base são substituídos pelo método MyHelloWorld no SayWorld Trait inserido. Seu comportamento é consistente com os métodos definidos na classe MyHelloWorld. A ordem de precedência é que os métodos na classe atual substituem os métodos de características, que por sua vez substituem os métodos na classe base.
<?php aula Base { público função diga Olá ( ) { eco ' Olá ' ; } } característica Diga Mundo { público função diga Olá ( ) { pai :: digaOlá ( ) ; ' Mundo! ' ; } } aula MeuOláMundo estende Base { usar DigaMundo ; $o = novo MeuOláMundo ( ) ; $o -> dizerOlá ( ) ? >
A rotina acima produzirá:
Olá mundo!
O nome do método da classe (novo no PHP 5.0.0). Retorna o nome do método conforme foi definido (diferencia maiúsculas de minúsculas).
Exemplo:
<?php função teste ( ) { eco ' Nome da função : ' __METHOD__ ; teste ( ) ? >
O resultado de saída do exemplo acima é:
Nome da função: teste
O nome do namespace atual (diferencia maiúsculas de minúsculas). Esta constante é definida em tempo de compilação (novo no PHP 5.3.0).
Exemplo:
<?php espaço para nome MeuProjeto ; ' O namespace é: " ' , __NAMESPACE__ , ' " ' ; // Saída "MyProject" ?>
O resultado de saída do exemplo acima é:
O namespace é: "MeuProjeto"