что означает "&" перед классами в php? - PullRequest
2 голосов
/ 16 июня 2009

Я только что унаследовал этот код в PHP, который, похоже, выполняет какой-то вызов веб-службы для googles api. Я не совсем эксперт по PHP, и у меня есть несколько вопросов о синтаксисе, которые касаются следующей строки $ soapClients = & APIlityClients :: getClients ();

Я понимаю, что двойной "::" означает, что APIlityClients является статическим классом, но я не уверен, что означает "&" перед APIlityClients.

Ответы [ 5 ]

5 голосов
/ 16 июня 2009

Когда вы используете амперсанд перед переменной в PHP, вы создаете ссылку на эту переменную.

$foo = 'bar';
$baz = &$foo;

echo $foo //bar
echo $baz //bar

$foo = 'foobazbar';
echo $foo //foobazbar
echo $baz //foobazbar

До PHP5, когда вы создавали объект из класса в PHP, этот объект передавался в другие переменные значением . Объект НЕ был ссылкой, как это принято в большинстве других объектно-ориентированных (Java, C # и т. Д.) Языков.

Однако, создав экземпляр класса с амперсандом перед ним, вы можете создать ссылку на возвращаемый объект, и он будет вести себя как объект в других языках. До PHP5 это был обычный метод для достижения ООП-подобных эффектов и / или повышения производительности.

4 голосов
/ 16 июня 2009

Это версия PHP получения ссылки на что-то, а не копирования его значения. Таким образом, в этом случае & будет получать ссылку на возвращаемое значение APIlityClients::getClients(), а не копию самого возвращаемого значения.

2 голосов
/ 16 июня 2009

Это означает «адрес» - и оно ссылается на значение, возвращаемое из вызова getClients (), а не на сам класс APllityClients.

По сути, это говорит о присвоении $ soapClients ссылки на все, что возвращается из getClients (), а не о создании копии возвращаемого значения.

1 голос
/ 16 июня 2009

& указывает на передачу по ссылке, а не по значению . В PHP5 это не очень применимо, так как классы по умолчанию передаются по ссылке в этой версии, но не в предыдущих версиях.

0 голосов
/ 16 июня 2009

& означает, что это ссылка. Ссылки используются для того, чтобы несколько переменных указывали на один и тот же объект.

эта страница объясняет это лучше, чем я могу

Также см. http://us3.php.net/manual/en/language.references.php для получения дополнительной информации о ссылках в php в целом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...