2010-03-30 9 views

Respuesta

10

No, no es así. Las etiquetas separadas <?php ?> comparten el mismo alcance variable. Puede acceder a cualquier variable declarada desde cualquier ámbito:

<?php $foo = 4; ?> 
<?php echo $foo; /* will echo 4 */ ?> 

La única noción de alcance en PHP existe para funciones o métodos. Para usar una variable global en una función o método, debe usar la matriz $GLOBALS o una declaración global $theVariableINeed; dentro de su función.

+0

Re: "Existe la única noción de alcance en PHP para funciones o métodos", PHP 5.3 y espacios de nombres tipo de convertir esa declaración en su oído. –

1

No, de forma predeterminada, todos los archivos comparten el mismo alcance en PHP. El único alcance que obtiene es mediante el uso de clases o funciones.

0

Si tiene

<php 
$a = '111'; 
?> 

y

<php 
echo $a 
?> 

en la misma página, que es la salida 111, es decir, que reconoce las variables desde el primer fragmento de código PHP.

1

El alcance variable en PHP no funciona así.

El puntaje variable está funcionando en clases y funciones. Por ejemplo:

<?php $a = 10 ?> 

<?php echo $a; ?> 

Esto funcionará.

Sin embargo:

<?php 
$a = 10; 

function get_a(){ 
    echo $a; 
} 
?> 

Ésta no va a funcionar. No muestra un valor de $ o un error de nivel de AVISO (según su configuración)

Para obtener más información, puede see this page.

1

Puede pensar en las partes de la secuencia de comandos que NO ESTÁN dentro de <?php ?> como equivalentes a una instrucción de eco, excepto sin ninguna interpolación de variables, citas, etc. - solo <?php ?>. Así, por ejemplo, incluso se puede hacer algo como esto:

 
<?php 
if (42) 
{ 
?> 
    This will only be output if 42 is true. 
<?php 
} 
?> 
+1

Nota: No estoy diciendo que esto sea una buena idea, simplemente ilustra bien mi punto. –

+0

Esta característica es extremadamente útil para el código generado automáticamente, pero prefiero no leerlo ni escribirlo. – zneak

+0

Tan bruto. Pero bueno, PHP estaba muy por delante de JSX: D – Askdesigners

Cuestiones relacionadas