Al igual que el lenguaje provee de unos métodos mágicos predefinidos para realizar diferentes acciones, también provee de unas constantes predefinidas para obtener información del código contenido en el script que estamos ejecutando.

Las constantes mágicas al igual que los métodos mágicos comienzan con dos barras inferiores (__), pero a diferencia de estos últimos las constantes también acaban con las dos barras inferiores, además son sensibles a si se escriben con mayúsculas o minúsculas, siendo la única forma correcta las mayúsculas. Con estas características lo tenemos muy fácil para detectarlas al leer un código, incluso si no las conocemos sabremos por su forma de escribirlas de que se trata.

La verdad es que son fáciles de usar e implementar y la explicación que da la documentación oficial de PHP está más que completa para cualquiera, pero aun así las listaré:

  • _LINE_: Esta constante nos devuelve la linea exacta donde esta situada en el fichero, puede ser muy útil para trazar errores o crear logs en nuestras aplicaciones.
  • _DIR_: Esta constante nos devuelve el nombre del directorio donde esta incluido el script, y al igual que LINE puede ser muy útil para trazar bugs.
  • _FILE_: Nos devuelve la Ruta completa donde se encuentra el script, además del nombre de este con su extensión, al igual que en las constantes anteriores puede ser muy útil para localizar bugs.
  • _FUNCTION_: Si la usamos dentro de una función nos devolverá el nombre del la función que la contiene.
  • _CLASS_: Al igual que* FUNCTION* nos devuelve el nombre de la clase donde esta declara.
  • _METHOD_: Es la hermana gemela de* FUNCTION* solo que enfocada a los métodos, su función es exactamente la misma, devolver el nombre del método que la contiene.
  • _NAMESPACE_: Aunque aun no hemos llegado a explicar los *namespaces de PHP *no está de más conocer esta constante, la cual nos devuelve el namespace donde esta declarada.
  • _TRAIT_: Tampoco hemos llegado a hablar sobre los Traits, pero al igual que con los namespaces no está de más conocerla. Esta constante devuelve el nombre del Trait donde fue declarada, y en caso de haber sido declarado un namespace también lo devuelve.

Quizás a simple vista puedas pensar que son inútiles estas constantes y que no las vas a necesitar, es normal puesto que no te harán falta en scripts simples, pero cuando el sistema que estas construyendo empieza a crecer, y por ejemplo tienes una super clase que engloba otras o algo similar, es buena idea usarlas para localizar en todo momento que se esta ejecutando y donde, de esta forma no te volverás loco localizando errores a ciegas.