2010-03-30 7 views

risposta

10

No, non lo fanno. I tag separati <?php ?> condividono lo stesso ambito variabile. È possibile accedere a qualsiasi variabile dichiarata da qualsiasi ambito:

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

L'unica nozione di ambito in PHP esiste per funzioni o metodi. Per utilizzare una variabile globale in una funzione o un metodo, è necessario utilizzare l'array $GLOBALS o una dichiarazione global $theVariableINeed; all'interno della propria funzione.

+0

Re: "L'unica nozione scoping in PHP esiste per funzioni o metodi", PHP 5.3 e gli spazi dei nomi tipo di trasformare quel comunicato sul suo orecchio. –

1

No, per impostazione predefinita tutti i file condividono lo stesso ambito in PHP. L'unico ambito che ottieni è usando classi o funzioni.

0

Se hai

<php 
$a = '111'; 
?> 

e

<php 
echo $a 
?> 

nella stessa pagina, il risultato sarà 111, significato, esso riconosce le variabili del primo frammento di PHP.

1

Lo scope variabile in PHP non funziona così.

Il punteggio variabile funziona in classi e funzioni. Ad esempio:

<?php $a = 10 ?> 

<?php echo $a; ?> 

Questo funzionerà.

Tuttavia:

<?php 
$a = 10; 

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

Questo non funzionerà. E 'o non mostrando $ un valore o livello AVVISO errore (a seconda della configurazione)

Per ulteriori informazioni, è possibile see this page.

1

Si può pensare alle parti dello script che NON SONO all'interno di <?php ?> come equivalenti a un'istruzione echo, tranne senza alcuna interpolazione di variabili, virgolette, ecc. - solo <?php ?>. Così, per esempio, si può anche fare qualcosa di simile:

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

Nota: non sto dicendo che questa è una buona idea da fare, ma illustra bene il mio punto di vista. –

+0

Questa funzione è estremamente utile per il codice generato automaticamente, ma preferirei non leggerlo o scriverlo da solo. – zneak

+0

Così lordo. Ma hey PHP era molto più avanti di JSX: D – Askdesigners