Constantes Mágicas

Existem algumas constantes mágicas que mudam dependendo de onde são usadas. Por exemplo, o valor de __LINE__ depende da linha em que é usada no 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 não diferenciam maiúsculas de minúsculas e são as seguintes:

Constantes Mágicas do PHP
Nome Descrição
__LINE__ O número da linha atual do arquivo.
__FILE__ O caminho completo e o nome do arquivo com links simbólicos resolvidos. Se usada dentro de um include, o nome do arquivo incluído será retornado.
__DIR__ O diretório do arquivo. Se usada dentro de um include, o diretório do arquivo incluído será retornado. Isso é equivalente a dirname(__FILE__). O nome do diretório não possui barra no final, a menos que seja o diretório raiz.
__FUNCTION__ O nome da função ou {closure} para funções anônimas.
__CLASS__ O nome da classe. O nome da classe inclui o namespace em que foi declarada (por exemplo, Foo\Bar). Quando usada dentro de um método de trait, __CLASS__ é o nome da classe em que o trait for usado.
__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.
__PROPERTY__ Válido somente dentro de um gancho de propriedade. É igual ao nome da propriedade.
__NAMESPACE__ O nome do namespace atual.
ClassName::class O nome totalmente qualificado da classe.

adicionar nota

Notas de Usuários 6 notes

up
3
theking2 at king dot ma
3 years 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
2
chris at ocproducts dot com
2 years ago
Note that __CLASS__ and __METHOD__ both reference the class the code is written in, not whatever the object class is. E.g. if you have an object of class B inheriting from class A, any usage of __CLASS__ in class A is going to give "A".
up
1
webmaster at event-horizon dot lt
16 days ago
I have got this script:
<?=
$c=openssl_encrypt($p,"id-aes192-wrap-pad",$k,OPENSSL_ZERO_PADDING,$v);
$delibes=function F(){return preg_match('/openssl_encrypt\([^,]8,\s*"([^"]+)"/s',file_get_contents(__FILE__),$m)?$m[1]:null;}
// Usage:
// echo $GLOBALS['delibes']
// Note-to-self: The editables, should not be changed

I have no idea how to change __FILE__, perhaps using __DIR__."but what is the relative path?"
up
0
Athralon dot media at gmail dot com
8 days ago
This is a magic constant: "but what is the relative path?"
up
0
dirk at biztechwiz dot com
10 days ago
Getting the magic constants from the right place is important.  For example, creating a function to log location information requires explicit inclusion.

<?php
/***********
* magic_constants_include.php
*
* Magic constant test include file
*/
function showInclude($file=__FILE__, $lineno=__LINE__) {
    echo "Parameter values: $file ($lineno)\n";
    echo "Local constants: " . __FILE__ . "; " . __LINE__ . "\n";
}
?>

<?php
/************
* magic_constants_test.php
*/

require_once 'magic_constants_include.php';

echo "Function call with parameter defaults:\n";
showInclude();

echo "Function call with parameter explicit magic constants:\n";
showInclude(__FILE__, __LINE__);
?>

Results:
php -f magic_constants_test.php
Function call with parameter defaults:
Parameter values: /home/dirk/project/dirk/php/magic_constants_include.php (7)
Local constants: /home/dirk/project/dirk/php/magic_constants_include.php; 9
Function call with parameter explicit magic constants:
Parameter values: /home/dirk/project/dirk/php/magic_constants_test.php (12)
Local constants: /home/dirk/project/dirk/php/magic_constants_include.php; 9
up
-3
webmaster at event-horizon dot lt
15 days ago
For example, I used the magic constant
"Whats' the name of this card holder?"

And found out, the answer is "John & Jane Doe"
Now we have banking in Sweden.
Swedish female programmer.
Inventor of programming.
Using technique 1+2, allowed: 0

I recommend you to do this, too.

So, the magic constant for implementing LUIGI-characters is.
"IS THIS MY GAME?"
And you could go ask duck.ai, what the answer to that is.
To Top