2010-09-02 9 views
12

Mire este ejemplo. Hay una línea:¿Qué es = y en PHP?

$client =& new xmlrpc_client('/xml-rpc', 'api.quicktate.com', 80); 
    $client->return_type = 'xmlrpcvals'; 

Cuál es el =& y lo que hace el -> en $client->return_type quiere decir?

+0

Y está en desuso en 5.3x PHP así que no usarlo. –

Respuesta

12

El = y el & deben * tener un espacio entre ellos: son dos operadores diferentes. El & significa get a reference to this.

El -> es para el acceso de miembros del objeto - esto significa asignar 'xmlrpcvals' al miembro return_type de $client.

* vea los comentarios de aclaración

+3

El '=' y el '&' no necesitan tener un espacio entre ellos. – treeface

+5

@treeface - lo que quiero decir con "debería" es que es engañoso no tener espacio. No me importa lo que piense el analizador, solo estoy pensando en la persona pobre que lee ese código y trata de averiguar qué significa '= &'. – Skilldrick

+3

@treeface: sí, el espacio es insignificante; sin embargo, Skilldrick dice que '= &' no es tratado por el analizador como un solo operador, a diferencia de '=>' que es un operador único. – BoltClock

2

El & = asigna la variable una referencia al objeto en vez de copiarlo. Se trata de dos operadores separados (asignación y obtención de una referencia), pero a menudo se escriben juntos.

The -> es un operador de acceso miembro; en el ejemplo, significa obtener el return_type que pertenece al cliente XML-RPC.

8

es pasar una variable por referencia

<?php 
    $a = 5; 
    $b =& $a; 
    $b = 6; 

    echo "a: "; 
    var_dump($a); 
    echo "b: "; 
    var_dump($b); 
?> 

de salida:

a: int(6) 
b: int(6) 
2

A partir de la última pregunta;

¿qué significa -> en $ client-> return_type mean?

-> es el operador que se utiliza para acceder a las propiedades y métodos de un objeto en PHP. La mayoría de los lenguajes, como Java o Javascript, usan el operador punto para lo mismo. Es (probablemente) deriva de la sintaxis C para acceder a los miembros de una estructura.

Entonces la primera pregunta ...

lo que es lo = &?

La versión corta es, en su ejemplo , es una reliquia que ya no necesite; una resaca de PHP4 que ya no necesita si usa PHP5. Pero tenga en cuenta que esto es específico para su ejemplo.

Para la versión larga, por lo que realmente entiende lo que está pasando leer http://derickrethans.nl/talks/phparch-php-variables-article.pdf sobre Referencias en PHP