我正在使用带有此代码的Facebook库:
class FacebookRestClient {
...
public function &users_hasAppPermission($ext_perm, $uid=null) {
return $this->call_method('facebook.users.hasAppPermission',
array('ext_perm' => $ext_perm, 'uid' => $uid));
}
...
}
&在函数定义的开头意味着,我如何使用这样的库(在一个简单的例子中)
答案 0 :(得分:145)
函数名前的&符号表示函数将返回对变量的引用而不是值。
通过引用返回时很有用 你想用一个函数来找到 引用应该是哪个变量 界。不要使用按引用返回 提高性能。引擎 将自动优化此功能 它自己的。仅在返回时引用 你有一个有效的技术理由 这样做。
答案 1 :(得分:14)
如前所述,它正在返回一个引用。在PHP 4中,对象按值分配,就像任何其他值一样。这非常不直观,与大多数其他语言的工作方式相反。
为了解决这个问题,引用被用于指向对象的变量。在PHP 5中,很少使用引用。我猜这是遗留代码或代码试图保持与PHP 4的向后兼容性。
答案 2 :(得分:3)
这在PHP中通常称为返回参考或通过参考返回。
当您想使用函数来通过引用返回时很有用 查找引用应该绑定到哪个变量。不使用 参考返回以提高性能。引擎会 自行自动优化。仅在以下情况下返回引用 您有充分的技术理由这样做。
PHP documentation on Returning reference
PHP中的引用只是分配给变量内容的另一个名称。 PHP references are not like pointers in C programming,它们不是实际的内存地址,因此不能用于指针算术。
特别是对于初学者来说,返回引用的概念可能会非常混乱,因此举个例子会有所帮助。
$populationCount = 120;
function &getPopulationCount() {
global $populationCount;
return $populationCount;
}
$countryPopulation =& getPopulationCount();
$countryPopulation++;
echo "\$populationCount = $populationCount\n"; // Output: $populationCount = 121
echo "\$countryPopulation = $countryPopulation\n"; //Output: $countryPopulation = 121
用前面的getPopulationCount()
定义的函数&
返回对$populationCount
的内容或值的引用。因此,增加$countryPopulation
也会增加$populationCount
。