Constantes mágicas

Existen varias constantes mágicas que cambian dependiendo de dónde se utilicen. Por ejemplo, el valor de __LINE__ depende de la línea en la que se use en el script. Todas estas constantes "mágicas" se resuelven en tiempo de compilación, a diferencia de las constantes regulares, que se resuelven en tiempo de ejecución. Estas constantes especiales no distinguen entre mayúsculas y minúsculas y son las siguientes:

Constantes mágicas de PHP
Nombre Descripción
__LINE__ El número de línea actual del archivo.
__FILE__ La ruta completa y el nombre del archivo con los enlaces simbólicos resueltos. Si se usa dentro de un include, se devuelve el nombre del archivo incluido.
__DIR__ El directorio del archivo. Si se usa dentro de un include, se devuelve el directorio del archivo incluido. Es equivalente a dirname(__FILE__). El nombre del directorio no incluye la barra final a menos que sea el directorio raíz.
__FUNCTION__ El nombre de la función, o {closure} para las funciones anónimas.
__CLASS__ El nombre de la clase. El nombre de la clase incluye el espacio de nombres en el que fue declarada (p. ej. Foo\Bar). Cuando se usa en un método de trait, __CLASS__ es el nombre de la clase en la que se utiliza el trait.
__TRAIT__ El nombre del trait. El nombre del trait incluye el espacio de nombres en el que fue declarado (p. ej. Foo\Bar).
__METHOD__ El nombre del método de la clase.
__PROPERTY__ Solo es válido dentro de un hook de propiedad. Es igual al nombre de la propiedad.
__NAMESPACE__ El nombre del espacio de nombres actual.
ClassName::class El nombre completo cualificado de la clase.

add a note

User Contributed Notes 2 notes

up
4
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
3
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".
To Top