2010-09-02 2 views
12

Посмотрите на этот пример. Существует линия:Что такое = & в PHP?

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

Что такое =& и что делает -> в $client->return_type означает?

+0

И это осуждается в PHP 5.3x, так что не использовать его. – 2012-01-02 00:15:34

ответ

12

= и & должны иметь пробел между ними - это два разных оператора. Значение & означает get a reference to this.

-> предназначен для доступа к объекту - это означает присвоение «xmlrpcvals» члену return_type от $client.

* см комментарии для осветления

+3

У '=' и '&' не должно быть пробела между ними. – treeface

+5

@treeface - что я подразумеваю под «должен», так это то, что вводить в заблуждение не нужно. Мне все равно, что думает парсер, я просто думаю о том, что бедный человек читает этот код и пытается выяснить, что означает '= &'. – Skilldrick

+3

@treeface: да, пространство несущественно; однако Skilldrick говорит, что '= &' не обрабатывается парсером как один сам оператор, в отличие от '=>', который является единственным оператором. – BoltClock

1

Это называется returning by reference.

+4

... и это больше не нужно в PHP5, где объекты всегда передаются по ссылке. –

2

= & присваивает переменной ссылку на объект, а не копировать его. Это два отдельных оператора (назначение и получение ссылки), но они часто записываются вместе.

A -> - оператор доступа к члену; в примере это означает, что return_type принадлежит клиенту XML-RPC.

8

ли передать переменную по ссылке

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

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

выход:

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

Начиная с последнего вопроса в первую очередь;

Что такое -> in $ client-> return_type mean?

-> оператор используется для доступа к свойствам и методам объекта объекта в PHP. Большинство языков, таких как Java или Javascript, используют оператор точек для одного и того же объекта. Это (возможно) происходит от синтаксиса C для доступа к членам структуры.

Тогда что первый вопрос ...

что такое = &?

Короткая версия, в вашем примере, это пережиток вам больше не нужны; похмелье от PHP4, которое вам больше не нужно, если вы используете PHP5. Но обратите внимание, что это характерно для вашего примера.

Для длинной версии, так что вы действительно понимаете, что происходит прочитать http://derickrethans.nl/talks/phparch-php-variables-article.pdf о ссылках на PHP