PHP ofrece un gran número de constantes predefinidas a cualquier script en ejecucción. Muchas de estas constantes, sin embargo, son creadas por diferentes extensiones, y sólo estarán presentes si dichas extensiones están disponibles, bien por carga dinámica o porque han sido compiladas.
   Hay nueve constantes mágicas que cambian dependiendo de
   dónde se emplean. Por ejemplo, el valor de
   __LINE__ depende de la línea en que se 
   use en el script. Todas estas constantes «mágicas» se resuelven 
   durante la compilación, a diferencia de las constantes normales que lo hacen durante la ejecución.   Estas constantes especiales son sensibles a mayúsculas
   Estas constantes especiales distinguen mayúsculas y minúsculas, y son las siguientes:
  
| Nombre | Descripción | 
|---|---|
| __LINE__ | El número de línea actual en el fichero. | 
| __FILE__ | Ruta completa y nombre del fichero con enlaces simbólicos resueltos. Si se usa dentro de un include, devolverá el nombre del fichero incluido. | 
| __DIR__ | Directorio del fichero. Si se utiliza dentro de un include, devolverá el directorio del fichero incluído. Esta constante es igual que dirname(__FILE__). El nombre del directorio no lleva la barra final a no ser que esté en el directorio root. | 
| __FUNCTION__ | Nombre de la función. | 
| __CLASS__ | Nombre de la clase. El nombre de la clase incluye el namespace declarado en (p.e.j. Foo\Bar). Tenga en cuenta que a partir de PHP 5.4 __CLASS__ también funciona con traits. Cuando es usado en un método trait, __CLASS__ es el nombre de la clase del trait que está siendo utilizado. | 
| __TRAIT__ | El nombre del trait. El nombre del trait incluye el espacio de nombres en el que fue declarado (p.e.j. Foo\Bar). | 
| __METHOD__ | Nombre del método de la clase. | 
| __NAMESPACE__ | Nombre del espacio de nombres actual. | 
| ClassName::class | El nombre de clase completamente cualificado. Véase también ::class. | 
Véase también get_class(), get_object_vars(), file_exists() y function_exists().
| Versión | Descripción | 
|---|---|
| 5.5.0 | Se añadió la constante mágica ::class | 
| 5.4.0 | Se añadió la constante __TRAIT__ | 
| 5.3.0 | Se añadieron las constantes __DIR__y__NAMESPACE__ | 
| 5.0.0 | Se añadió la constante __METHOD__ | 
| 5.0.0 | Antes de esta versión, los valores de algunas constantes mágicas estaban siempre en minúsculas. Ahora todas ellas están en mayúsculas (contienen nombres mientras eran declaradas). | 
| 4.3.0 | Se añadieron las constantes __FUNCTION__y__CLASS__ | 
| 4.0.2 | __FILE__siempre contiene una ruta absoluta con enlaces
         simbólicos resueltos, mientras que en versiones antiguas contenía una ruta relativa
         bajo algunas circunstancias |