2009-08-03 19 views
51

Puede alguien explicar la diferencia entre usarDEFINIR vs variable en PHP

define('SOMETHING', true); 

y

$SOMETHING = true; 

Y tal vez los beneficios entre uno o el otro?

Utilizo variables en todas partes e incluso en un archivo de tipo de configuración que se incluye en cada página, sigo usando variables ya que no veo por qué usar el método de definición.

Respuesta

76

DEFINE hace una constante, y las constantes son globales y se pueden usar en cualquier lugar. Tampoco pueden redefinirse, qué variables pueden ser.

Normalmente uso DEFINE for Configs porque nadie puede meterse con él después de los hechos, y puedo verificarlo en cualquier lugar sin global-ling, lo que facilita las comprobaciones.

+0

¿Puedo pasar el ID de usuario de base de datos en la sesión? p.ej. define ($ _ SESSION ['user_id'], row ['id']) que la fila ['id'] proviene de la base de datos –

11

Una vez definida, una 'constante' no se puede cambiar en el tiempo de ejecución, mientras que una asignación de variable ordinaria puede hacerlo.

Las constantes son mejores para cosas como las directivas de configuración que no deberían modificarse durante la ejecución. Además, el código es más fácil de leer (y mantener el traspaso de &) si los valores que están destinados a ser constantes son explícitamente.

6

define() es una variable de solo lectura, en comparación con una variable estándar que admite operaciones de lectura y escritura.

+1

solo una nota - no veo cómo se aplica el término "variables de solo lectura" a define() - como dice el manual, define una * constante nombrada *, que es algo bastante diferente. –

+0

-1: erróneo, e incluso si no fuera así, simplemente reitera las dos publicaciones anteriores. – hobodave

+2

Una constante no es una variable por definición (sin juego de palabras) ;-) –

3

También hay una diferencia en el alcance.

En el ejemplo proporcionado por el cartel de orignal, $SOMETHING no será accesible dentro de una función, mientras que define('SOMETHING', true) será.

0

Una constante es muy útil cuando se desea acceder a los datos desde el interior de una función, marque esta

<?php function data(){ 
define("app","hey you can see me from outside the function",false); 

$tech = "xampp"; } data(); echo $tech; echo app; ?> 

Si se utiliza una variable que nunca se van a poner el valor en el interior Esto es lo que consigo

Notice: Undefined variable: tecnología en D: \ xampp \ htdocs \ data \ index.php on line 8 bueno que me puede ver desde fuera la función

Cuestiones relacionadas