Primera pregunta sobre SO y es un verdadero candidato a RTM. Pero te prometo que he buscado y parece que no puedo encontrarlo. Felizmente haré un #headpalm cuando resulte ser algo simple que me perdí.
Tratando de averiguar Zend Framework y encontré la siguiente sintaxis:
$this->_session->{'user_id'}
Nunca he visto la sintaxis de llaves que se usa para acceder a lo que parece ser una variable miembro. ¿En qué se diferencia de
$this->_session->user_id
Supongo que la _session es irrelevante, pero la incluyo en la pregunta, ya que puede que no lo sea.
¿Las llaves son solo una convención de limpieza que intenta envolver el nombre de la variable compuesta user_id? ¿O es algún tipo de accesorio especial?
Cualquier sugerencia sobre TFM para que pueda R up sería humildemente apreciada.
Muchas gracias. Por favor se gentil.
fuente
$obj->$method($params)
Respuestas:
Las llaves se utilizan para especificar explícitamente el final de un nombre de variable. Por ejemplo:
echo "This square is {$square->width}00 centimeters broad.";
Entonces, su caso es realmente una combinación de dos casos especiales. Se le permite acceder a las variables de clase usando llaves y así:
$class->{'variable_name'} // Same as $class->variable_name $class->{'variable' . '_name'} // Dynamic values are also allowed
Y en su caso, simplemente los está rodeando con la sintaxis de llaves.
Consulte el manual de PHP , "sintaxis compleja (rizada)".
fuente
Conozco la sintaxis solo cuando uso variables variables :
$userProp = 'id'; $this->_session->{'user_'.$userProp};
fuente
Probablemente haya una gran ventaja de esa sintaxis, sin embargo, generalmente está en el dominio de cosas complicadas y cosas que probablemente quieras evitar.
Le permite utilizar caracteres en nombres de variables que de otro modo no están permitidos.
es decir:
$this->object->{"hello world\0\n"} $this->object->{"function(){ this is a truely awful name for a variable }"}
fuente
En el ejemplo que da, no hay una diferencia real, y
$this->_session->user_id
debería usarse IMO porque es más claro.Lo que la sintaxis de llaves es realmente buena para acceder a una variable miembro construyendo una expresión para su nombre, como
$this->_session->{'user_id' . $index}
.fuente
Los dos ejemplos de su pregunta hacen lo mismo. PHP le permite acceder a datos / métodos de miembros de varias maneras ...
object->{'name_of_member'}; object->name_of_member; $member = 'name_of_member'; object->$member;
fuente