una - Sintaxis de llaves PHP para variable miembro
todas las etiquetas de php (5)
Primera pregunta sobre SO y es un verdadero candidato de RTM. Pero te prometo que he buscado y parece que no puedo encontrarlo. Estaré encantado de hacer un #headpalm cuando resulte ser algo simple que eché de menos.
Tratando de descubrir Zend Framework y encontré la siguiente sintaxis:
$this->_session->{''user_id''}
Nunca he visto la sintaxis de llaves usado para acceder a lo que parece ser una variable miembro. Como es diferente de
$this->_session->user_id
Supongo que la sesión es irrelevante, pero la incluyo en la pregunta, ya que puede no serlo.
¿Las llaves son solo una convención de limpieza que intenta envolver el nombre de la variable compuesta ID_usuario? ¿O es algún tipo de un accesorio especial?
Cualquier sugerencia sobre TFM para que pueda R sería humildemente apreciada.
Muchas gracias. Por favor se gentil.
En el ejemplo que das, no hay diferencia real, y se debe usar IMO $this->_session->user_id
porque está más claro.
Para qué sirve la sintaxis de llaves es acceder a una variable miembro construyendo una expresión para su nombre, como $this->_session->{''user_id'' . $index}
$this->_session->{''user_id'' . $index}
.
Las llaves se usan 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. Puedes acceder a las variables de clase con llaves y así:
$class->{''variable_name''} // Same as $class->variable_name
$class->{''variable'' . ''_name''} // Dynamic values are also allowed
Y en tu caso, simplemente los rodeas con la sintaxis de llaves.
Consulte el manual de PHP , "sintaxis compleja (rizada)".
Los dos ejemplos en tu pregunta hacen lo mismo. PHP le permite acceder a los datos / métodos de miembros de varias maneras ...
object->{''name_of_member''};
object->name_of_member;
$member = ''name_of_member'';
object->$member;
Sé la sintaxis solo cuando uso variables variables :
$userProp = ''id'';
$this->_session->{''user_''.$userProp};
Sin embargo, es probable que haya una gran ventaja de esa sintaxis, generalmente en el dominio de cosas peludas, y cosas que probablemente quiera evitar.
Le permite usar caracteres en nombres de variables que de lo contrario no están permitidos.
es decir:
$this->object->{"hello world/0/n"}
$this->object->{"function(){ this is a truely awful name for a variable }"}