PHP Constantes mágicas

PHP proporciona una gran cantidad de constantes predefinidas a cualquier script que ejecute.

Sin embargo, muchas constantes están definidas por distintas bibliotecas de extensiones y solo aparecen cuando dichas extensiones se han cargado, ya sea después de una carga dinámica o si ya se incluyeron en tiempo de compilación.

Hay ocho constantes mágicas cuyo valor cambia según su posición en el código.

Por ejemplo, el valor de __LINE__ depende de la línea en la que se encuentra en el script. Estas constantes especiales no distinguen entre mayúsculas y minúsculas, como se muestra a continuación:


__LINE__

El número de línea actual en el archivo.

Ejemplo

<?php echo 'Esta es la línea "' . __LINE__ . '"'; ?>

El resultado del ejemplo anterior es:

这是第 “ 2 ” 行

__FILE__

La ruta completa y el nombre del archivo. Si se usa en un archivo incluido, se devuelve el nombre del archivo incluido.

Desde PHP 4.0.2, __FILE__ siempre contiene una ruta absoluta (si es un enlace simbólico, la ruta absoluta resuelta), mientras que en versiones anteriores a veces contenía una ruta relativa.

Ejemplo:

Ejemplo

<?php echo 'El archivo se encuentra en "' . __FILE__ . ' " '; ?>

El resultado del ejemplo anterior es:

该文件位于 “ E:\wamp\www\test\index.php ”

__DIR__

El directorio donde se encuentra el archivo. Si se usa en un archivo incluido, se devuelve el directorio del archivo incluido.

Es equivalente a dirname(__FILE__). A menos que sea el directorio raíz, el nombre del directorio no incluye la barra final. (Nuevo en PHP 5.3.0)

Ejemplo

<?php echo 'El archivo se encuentra en "' . __DIR__ . ' " '; ?>

El resultado del ejemplo anterior es:

该文件位于 “ E:\wamp\www\test ”

__FUNCTION__

Nombre de la función (nuevo en PHP 4.3.0). Desde PHP 5, esta constante devuelve el nombre con el que se definió la función (distingue entre mayúsculas y minúsculas). En PHP 4, este valor siempre estaba en minúsculas.

Ejemplo

<?php function test() { echo 'El nombre de la función es:' . __FUNCTION__ ; } test(); ?>

El resultado del ejemplo anterior es:

函数名为:test

__CLASS__

Nombre de la clase (nuevo en PHP 4.3.0). Desde PHP 5, esta constante devuelve el nombre con el que se definió la clase (distingue entre mayúsculas y minúsculas).

En PHP 4, este valor siempre estaba en minúsculas. El nombre de la clase incluye su área de declaración (por ejemplo, Foo\Bar). Ten en cuenta que desde PHP 5.4, __CLASS__ también funciona con traits. Cuando se usa en un método de trait, __CLASS__ es el nombre de la clase que llama al método del trait.

Ejemplo

<?php class test { function _print() { echo 'El nombre de la clase es:' . __CLASS__ . "<br>"; echo 'El nombre de la función es:' . __FUNCTION__ ; } } $t = new test(); $t->_print(); ?>

El resultado del ejemplo anterior es:

类名为:test
函数名为:_print

__TRAIT__

Nombre del trait (nuevo en PHP 5.4.0). Desde PHP 5.4.0, PHP implementa un método de reutilización de código llamado traits.

El nombre del trait incluye su área de declaración (por ejemplo, Foo\Bar).

Los miembros heredados de la clase base son reemplazados por el método MyHelloWorld insertado por el trait SayWorld. Su comportamiento es el mismo que el método definido en la clase MyHelloWorld. El orden de prioridad es que los métodos de la clase actual sobrescriben los métodos del trait, y los métodos del trait sobrescriben los métodos de la clase base.

Ejemplo

<?php class Base { public function sayHello() { echo 'Hello '; } } trait SayWorld { public function sayHello() { parent::sayHello(); echo 'World!'; } } class MyHelloWorld extends Base { use SayWorld; } $o = new MyHelloWorld(); $o->sayHello(); ?>

El ejemplo anterior mostrará:

Hello World!

__METHOD__

Nombre del método de la clase (nuevo en PHP 5.0.0). Devuelve el nombre con el que se definió el método (distingue entre mayúsculas y minúsculas).

Ejemplo:

Ejemplo

<?php function test() { echo 'El nombre de la función es:' . __METHOD__ ; } test(); ?>

El resultado del ejemplo anterior es:

函数名为:test

__NAMESPACE__

El nombre del espacio de nombres actual (distingue entre mayúsculas y minúsculas). Esta constante se define en tiempo de compilación (nuevo en PHP 5.3.0).

Ejemplo:

Ejemplo

<?php namespace MyProject; echo 'El espacio de nombres es: "', __NAMESPACE__, '"'; //Salida "MyProject" ?>

El resultado del ejemplo anterior es:

命名空间为:"MyProject"
Otras extensiones