2011-04-18 9 views
14

estoy trabajando en esta colaboración código PHP y parece que algunas personas acceder a los campos de PHP StdClass como estePHP StdClass - campos de acceso como -> campo o -> { 'campo'}

$body->head 

y otros como

$body->{'head'} 

Por lo que puedo decir, estos son equivalentes. ¿Son ellos? ¿Importa qué se usa? ¿De qué manera preferirías? ¿Alguna peculiaridad a tener en cuenta aquí?

Respuesta

21

Son equivalentes. Sólo se necesita la segunda versión si desea utilizar nombres de atributos aberrantes como:

$data->{'what * the ! thing'} 

Esto ocurre a veces si convierte arreglos de datos en objetos puros.

Pero también existe la versión comillas dobles, lo que hace un poco más de sentido cuando realmente se necesita nombres de los atributos variables (variables básicamente variables para los objetos):

$data->{"attr$index"} 
+1

Sí. Solo evite '$ body -> {'head'}' si es posible. – Emmerman

2

Necesito crear clases con nombres de propiedades anormales me gusta esto {'field-name'}.

class myclass 
{ 
    public {'field-name-with-minus-sign'} = "something"; 
} 

Id no funciona. ¿Por qué? No quiero usar algo como esto:

$myclass = new stdClass(); 
$myclass->{'dumb-property-name'} 

porque tengo muchas propiedades como esta.

Cuestiones relacionadas