2008-10-20 18 views
5

Estoy un poco confundido por alguna sintaxis de PHP que he encontrado. Aquí está un ejemplo:

$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); 
} 

Mi pregunta es, básicamente, lo que quiere decir $this->$k? Pensé que podría significar la variable miembro que lleva el nombre de lo que está en $this->_tbl_key, pero ¿cómo funcionaría? ¿Es posible agregar variables miembro a una clase en tiempo de ejecución?

Respuesta

19

Buscará cualquiera que sea el valor de "k", y lo tratará como un nombre de variable. Estas dos muestras son los mismos:

echo ($obj->myvar); 

#### 

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

OK, eso es lo que pensé para empezar - Necesito encontrar de dónde viene esa variable, entonces. –

5

creo que es un caso de variable variables.

+0

No es mucho, sin embargo. La respuesta de John Millikin es correcta. –

+3

@Garrett: ¿excepto que sí? –

+0

La respuesta de John es más completa, pero Paolo está en lo cierto. Esta es una variable con nombre variable. Si desea pensar más específicamente en términos del uso de OOP, también podría llamarlo una propiedad variable (que se describe en el enlace de Paolo). –

Cuestiones relacionadas