2010-09-02 12 views
12

Guarda questo esempio. C'è una linea:Che cos'è = & in PHP?

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

Qual è il =& e che cosa fa il -> in $client->return_type significa?

+0

Ed è deprecato in PHP 5,3x in modo da non utilizzare. –

risposta

12

Il = e lo & dovrebbero * avere uno spazio tra di loro - sono due operatori diversi. Il & significa get a reference to this.

Il -> è per l'accesso membro oggetto - questo significa assegnare 'xmlrpcvals' al membro return_type di $client.

* vedere i commenti di chiarimento

+3

Il '=' e il '&' non hanno bisogno di avere uno spazio tra di loro. – treeface

+5

@treeface - ciò che intendo per "dovrebbe" è che è fuorviante non avere uno spazio. Non mi interessa cosa pensa il parser, sto solo pensando alla povera persona che legge quel codice e cerca di capire cosa significa "=". – Skilldrick

+3

@treeface: sì, lo spazio è insignificante; tuttavia, Skilldrick sta dicendo che '= &' non è trattato dal parser come un singolo operatore stesso, a differenza di '=>' che è un singolo operatore. – BoltClock

1

Questo è chiamato returning by reference.

+4

... e questo non è più necessario in PHP5 dove gli oggetti vengono sempre passati per riferimento. –

2

L'= & assegna la variabile di riferimento all'oggetto piuttosto che copiarlo. Sono due operatori separati (assegnazione e ottenimento di un riferimento) ma sono spesso scritti insieme.

Il -> è un operatore di accesso membro; nell'esempio significa ottenere il return_type che appartiene al client XML-RPC.

8

è quello di passare una variabile per riferimento

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

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

uscita:

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

partire con l'ultima domanda prima;

qual è il significato di -> in $ client-> return_type?

-> è l'operatore si utilizza per accedere alle proprietà e metodi di un oggetto in PHP. La maggior parte delle lingue, come Java o Javascript, usano l'operatore punto per la stessa cosa. Esso (probabilmente) deriva dalla sintassi C per accedere ai membri di una struct.

Poi che la prima domanda ...

qual è il = &?

La versione corta è, nel tuo esempio, è una reliquia non più necessari; una sbornia da PHP4 di cui non hai più bisogno se usi PHP5. Ma nota questo è specifico del tuo esempio.

Per la versione lunga, in modo da realmente capire cosa sta succedendo leggere http://derickrethans.nl/talks/phparch-php-variables-article.pdf sui riferimenti in PHP