Programación

11/08/2011

PHP – Constantes

Vamos a continuar con los resúmenes de PHP, en este post voy a escribir un resumen sobre las constantes.

Una constante es un identificador (nombre) para expresar un valor simple. Como el nombre sugiere, este valor no puede variar durante la ejecucción del script. Una constante es sensible a mayúsculas por defecto. Por convención, los identificadores de contantes siempre suelen declararse en mayúsculas.

El nombre de una constante sigue las mismas reglas que cualquier otra etiqueta de PHP. Un nombre de constante válido empieza por una letra o subguión, seguido por cualquier número o letras, números o subguiones. Usando una regular expression, se representaría de la siguiente manera: [a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*

Ejemplos de uso y nomenclaturas:

// Nombre de constantes correctos
define("FOO",     "something");
define("FOO2",    "something else");
define("FOO_BAR", "something more");

// Nombres de constantes incorrectos
define("2FOO",    "something");

// Esto es válido, pero debería ser evitado:
// Ya que quizá algún día PHP crea una constante mágica
// con el mismo nombre y en ese caso provocaría un error en tu script
define("__FOO__", "something");

Igual que las superglobals, el acceso a una constante es global. Se puede acceder a constantes desde cualquier sitio del script sin importar desde donde. Para más información en el acceso, lea el manual en la sección acceso a variables.

Sintaxis – Link

Se puede definir una constante usando la función define() o también declarándola fuera de la clase con const desde PHP 5.3.0. Una vez que la constante está definida, no puede ser cambiada o redifinida en ningún momento.

Solo se puede definir como constantes valores escalares (booleanintegerfloat string). Se puede definir resource en constantes, pero debería ser evitado, porque puede causar resultados inesperados. Para ver los diferentes tipos de datos entra al post de PHP – Tipo de Datos.

Para obtener el valor de una constante solo es necesarios especificar su nombre. A diferencia de las variables, no se debe prefijar una constante con el signo $. También se puede usar la función constant()para leer el valor de una constante si se desea obtener el valor de una constante de forma dinámica. Use get_defined_constants() para obtener una lista de todas las constantes definidas.

Nota: Las contantes y las variables (globales) se encuentran en un espacio de nombres distinto. Esto implica que por ejemplo TRUE y $TRUE son diferentes.

Si se usa una constante que todavía no está definida, PHP asume que se está refiriendo al nombre de la constante en si, igual que si fuera una string (CONSTANT vs “CONSTANT”). Cuando esto suceda, se mostrará un error de nivel E_NOTICE. Ver también la sección en el manual de porqué $foo[bar] es incorrecto (a no ser que primero define() bar como constante). Si simplemente quiere comprobar si una constante está definida, use la función defined().

Estas son las diferencias entre constantes y variables:

  • Las constantes no llevan el signo dólar ($), como prefijo.
  • Las constantes solo pueden ser definidas usando la función define(), y no por simple asignación.
  • Las constantes pueden ser definidas y accedidas desde cualquier sitio sin importar las reglas de acceso de variables.
  • Las constantes no pueden ser redefinidas o eliminadas una vez se han definido. Y
  • Las constantes solo deberían contener valores escalares.

Defino una constante:

define("CONSTANT", "Hola mundo.");
echo CONSTANT; // muestra "Hola mundo."
echo Constant; // muestra "Constant" y provoca un error.

Definiendo constantes usando el keyword const:

// Funciona desde PHP 5.3.0
const CONSTANT = 'Hola Mundo';

echo CONSTANT;

Nota: A diferencia de definir constantes usando define(), las constantes definidas con la palabra clave const deben declararse en el nivel superior del entorno de la aplicación porque se definen en tiempo de ejecución. Esto significa que no pueden declararse dentro de funciones, loops o declaraciones if.

Constantes predefinidas – Link

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.

Hay siete 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 sensibles a mayúsculas y son las siguientes:

Nombre Descripción
__LINE__ Línea actual en el fichero.
__FILE__ Ruta completa y nombre del fichero. Si se usa dentro de un include, devolverá el nombre del fichero del include. Desde PHP 4.0.2, __FILE__ siempre contiene la ruta absoluta con symlinks resueltos, en otras versiones contenía la ruta relativa en según que circunstancias.
__DIR__ Directorio del fichero. Si se utiliza dentro de un include, devolverá el directorio del fichero include. 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. (Fue añadida en PHP 5.3.0)
__FUNCTION__ Nombre de la función. (Añadida en PHP 4.3.0) Desde PHP 5 esta constante devuelve el nombre de la función donde fue declarada (sensible a mayúsculas). En PHP 4 su valor siempre es en minúsculas.
__CLASS__ Nombre de la clase. (Añadida en PHP 4.3.0) Desde PHP 5 esta constante devuelve el nombre de la clase donde fue declarada (sensible a mayúsculas). En PHP 4 su valor siempre es en minúsculas.
__METHOD__ Nombre del método de la clase. (Añadida en PHP 5.0.0.) Nombre del método devuelto donde fue declarada. (sensible a mayúsculas).
__NAMESPACE__ Nombre del espacio de nombres actual (sensible a mayúsculas). Esta constante se define en tiempo de compilación (Añadida en PHP 5.3.0) The name of the current namespace (case-sensitive).

Listado con todas las Constantes Reservadas – Link

Pronto seguiré con mas temas!

 

 

 



About the Author

AgeValed
Pablo Ignacio de la Vega Ibañez, también conocido en algunos lugares como AgeValed, el creador de este blog. Actualmente estoy trabajando como Líder Técnico y Supervisor de Equipo en el área de desarrollo PHP.




 
 

 
PHP

Doctrine2 – Getting Started Issues

Luego de querer instalar y hacer funcionar doctrine en nuestro querido y amado Windows, me encontré con un par de problemas, y por lo que vi en internet a varios le paso lo mismo, vamos a tomar como ejemplo el Doctrine –...
by AgeValed
1

 
 
PHP

Zend Framework – Almacenamiento de sesión en base de datos

En este mini tutorial voy a mostrarles como guardar la sesión en base de datos con ZF 1, esto es muy util para manejo de sesiones en un entorno con múltiples servidores. Material Relacionado Zend_Session_SaveHandler_DbTable Z...
by AgeValed
0

 
 

PHP Conference Argentina 2013

El 4 y 5 de Octubre se celebrará, en la Ciudad de Buenos Aires (Argentina), la PHP Conference Argentina, edición local de la conferencia PHP más popular. Esta edición no solamente está destinada a los programadores PHP, ...
by AgeValed
0

 

 

PHP 5.4.0 liberado!

Les comento que ya se encuentra la nueva versión de PHP liberada, la versión 5.4.0, luego de varios updates que se hicieron a la versión PHP 5.3 ya contamos con nuevas versión que incluye (según ellos) un gran núme...
by AgeValed
0

 
 
PHP

PHP – Errores

En este resumen voy a escribir sobre los el control y registro de los errores en PHP. PHP nos permite definir nuestras reglas para controlar los errores, crear errores personificados o como serán registrados/notificados. Tipos...
by AgeValed
0

 




5 Comentarios


  1. Pablo Ignacio de la Vega Ibañez ha compartido esta publicación por primera vez:
    PHP – Constantes
    Vamos a continuar con http://sgp.cm/6a4662


  2. Capitulo 7 PHP – Constantes http://wp.me/pSTFt-7b #PHP #tutoriales ReTweet please! 🙂


  3. Capitulo 7 PHP – Constantes http://wp.me/pSTFt-7b #PHP #tutoriales ReTweet please! 🙂


  4. Capitulo 7 PHP – Constantes http://wp.me/pSTFt-7b #PHP #tutoriales ReTweet please! 🙂


  5. Capitulo 7 PHP – Constantes http://wp.me/pSTFt-7b #PHP #tutoriales ReTweet please! 🙂



Leave a Reply

Your email address will not be published. Required fields are marked *

*

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