2008-10-20 7 views
5

Sono un po 'confuso da qualche sintassi PHP che ho trovato. Ecco un esempio:

$k = $this->_tbl_key; 

if($this->$k) 
{ 
    $ret = $this->_db->updateObject($this->_tbl, $this, $this->_tbl_key, $updateNulls); 
} 
else 
{ 
    $ret = $this->_db->insertObject($this->_tbl, $this, $this->_tbl_key); 
} 

La mia domanda è fondamentalmente ciò che vuol dire $this->$k? Ho pensato che potrebbe significare la variabile membro che va sotto il nome di qualunque cosa sia in $this->_tbl_key, ma come funzionerebbe? È possibile aggiungere variabili membro a una classe in fase di esecuzione?

risposta

19

Cerca qualsiasi valore di "k" e lo considera come un nome di variabile. Questi due esempi sono gli stessi:

echo ($obj->myvar); 

#### 

$k = "myvar"; 
echo ($obj->$k); 
+0

OK, questo è quello che pensavo di iniziare - Ho bisogno di trovare da dove viene quella variabile, quindi. –

5

Credo che questo sia un caso di variable variables.

+0

Non è molto, però. La risposta di John Millikin è corretta. –

+3

@Garrett: tranne che lo è? –

+0

La risposta di John è più completa ma Paolo ha ragione. Questa è una variabile con nome variabile. Se vuoi pensare più specificamente in termini di utilizzo di OOP, puoi anche chiamarlo una proprietà variabile (che è descritta nel link di Paolo). –