我刚刚在PHP中继承了这段代码,似乎对googles api进行了某种web服务调用。我不是PHP的专家,我有一些语法问题,我具体涉及以下行 $ soapClients =& APIlityClients :: getClients();
我理解双“::”表示APIlityClients是一个静态类,但我不确定“&”是什么在APIlityClients前面意味着。
答案 0 :(得分:5)
在PHP中使用变量前面的&符号时,您将创建对该变量的引用。
$foo = 'bar';
$baz = &$foo;
echo $foo //bar
echo $baz //bar
$foo = 'foobazbar';
echo $foo //foobazbar
echo $baz //foobazbar
在PHP5之前,当您从PHP中的类创建对象时,该对象将被传递到按值的其他变量。该对象不是引用,这是大多数其他面向对象(Java,C#等)语言的标准。
但是,通过在其前面实例化一个带有&符号的类,您可以创建对返回对象的引用,并且它的行为就像其他语言中的对象一样。这是PHP5之前的常用技术,可以实现OOP效果和/或提高性能。
答案 1 :(得分:4)
PHP是获取对某事物的引用而不是复制其值的版本。因此,在这种情况下,&
将检索对APIlityClients::getClients()
的返回值的引用,而不是返回值本身的副本。
答案 2 :(得分:2)
它的意思是“地址” - 它指的是从getClients()调用返回的值,而不是APllityClients类本身。
基本上它是说将$ soapClients分配给对getClients()返回的内容的引用,而不是复制返回的值。
答案 3 :(得分:1)
&安培;表示pass by reference rather than by value。它在PHP5中应用不多,因为在该版本中默认通过引用传递类,但在以前的版本中不是。
答案 4 :(得分:0)
this page解释得比我更好
另请参阅http://us3.php.net/manual/en/language.references.php以获取有关php中的引用的更多信息