PHP 8.2.0 Beta 3 available for testing

Constantes mágicas

Há nove constantes mágicas, que mudam dependendo de onde são utilizadas. Por exemplo, o valor de __LINE__ depende da linha em que é utilizada em seu script. Todas essas constantes "mágicas" são resolvidas em tempo de compilação, ao contrário das constantes regulares que são resolvidas em tempo de execução. Essas constantes especiais são case-insentitive e estão descritas a seguir:

Algumas constantes "mágicas" do PHP
Nome Descrição
__LINE__ O número da linha corrente do arquivo.
__FILE__ O caminho completo e nome do arquivo com links simbólicos resolvidos. Se utilizado dentro de um include, o nome do arquivo incluído será retornado.
__DIR__ O diretório do arquivo. Se usado dentro de um include, o diretório do arquivo incluído é retornado. É equivalente a dirname(__FILE__). O nome do diretório não possui barra no final, a não ser que seja o diretório raiz.
__FUNCTION__ O nome da função, or {closure} para funções anônimas.
__CLASS__ O nome da classe. O nome da classe inclui o namespace em que foi declarado (por exemplo, Foo\Bar). Quando utilizada em um método trait, __CLASS__ é o nome da classe que está utilizando a trait.
__TRAIT__ O nome do trait. O nome do trait inclui o namespace em que foi declarado (por exemplo, Foo\Bar).
__METHOD__ O nome do método da classe.
__NAMESPACE__ O nome do namespace corrente.
ClassName::class O nome qualificado completo da classe.

add a note

User Contributed Notes 2 notes

up
2
theking2 at king dot ma
1 month ago
If PHP is run inside a web server request there is an important difference between the __DIR__ constant and $_SERVER['DOCUMENT_ROOT'].

Where __DIR__ of a PHP script contained within a sub-folder will include the complete server path $_SERVER['DOCUMENT_ROOT'] will contain a server path up to the _root_ of the application. This can be helpful when for instance an auto-loader is defined in an include file sitting inside a sub-folder and where the classes are located in another folder at the root of the application.
up
-4
sham dot hrm at gmail dot com
1 year ago
You can implement magic constants as given below example:

<?php
namespace UserModel {
    class
User {
        public function
__construct() {
            echo
'I am in '.__CLASS__.'</br>';
        }
        public function
showData() {
            echo
'I am in '.__METHOD__.'</br>';
        }
    }
   
   
$obj = new User;
   
$obj->showData();
    echo
__NAMESPACE__;
}
?>
To Top