3 min de lectura

Constantes Mágicas de PHP

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.

PHP ofrece un largo número de constantes predefinidas a cualquier script en ejecució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.

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.

Hay ocho constantes predefinidas que cambian dependiendo de donde son usadas. Por ejemplo el valor de __LINE__ depende en la línea que se use en el script. Estas constantes especiales son las siguientes:

Nombre Descripción
__LINE__ El número de línea actual en el fichero.

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.

__FILE__ Nos devuelve la 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 inicial a no ser que esté en el directorio root.

En resumen esta constante nos devuelve el nombre del directorio donde está incluido el script, y al igual que __LINE__ puede ser muy útil para trazar bugs.

__FUNCTION__ Nombre de la función.

Si la usamos dentro de una función nos devolverá el nombre del la función que la contiene.

__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.

Al igual que __FUNCTION__ nos devuelve el nombre de la clase donde esta declara.

__TRAIT__ El nombre de el trait. El nombre del trait incluye el namespace si alguno fue declarado en (p.e.j. Foo\Bar).

Esta constante devuelve el nombre del Trait donde fue declarada, y en caso de haber sido declarado un namespace también lo devuelve.

__METHOD__ Nombre del método de la clase.

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__ Nos devuelve el namespace donde está declarada.

 

Fuentes:

http://php.net/manual/es/language.constants.predefined.php

http://www.nazariglez.com/2013/02/21/tutorial-php-conociendo-las-constantes-magicas/

10 COMENTARIOS

Deja tus comentarios

This site uses Akismet to reduce spam. Learn how your comment data is processed.