用与号启动 PHP 函数意味着什么?

我正在使用 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));
}
...
}

函数定义开头的 & 是什么意思,以及如何使用这样的库(在一个简单的示例中)

56230 次浏览

函数名前面的与号意味着函数将返回对变量的引用,而不是对值的引用。

在以下情况下,通过引用返回是有用的 要使用一个函数来查找 引用应该是哪个变量 不要使用引用返回 来提高性能。引擎 会自动优化这个 只有在以下情况下才返回引用 你有正当的技术理由 这样做。

参见 返回参考文献

它正在返回一个引用,如前所述。在 PHP4中,对象是按值分配的,就像任何其他值一样。这是非常不直观的,并且与大多数其他语言的工作方式相反。

为了解决这个问题,引用被用于指向对象的变量。在 PHP5中,很少使用引用。我猜这是试图保持与 PHP4向后兼容性的遗留代码或代码。

这在 PHP 中通常称为 回复参考通过引用返回

通过引用返回在希望将函数用于 查找引用应该绑定到哪个变量。不要使用 以提高性能。引擎将 自动优化它自己。只有在下列情况下返回引用 你有正当的技术理由这样做。

关于 回复参考的 PHP 文档

在 PHP 中,参考文献只是分配给变量内容的另一个名称。它们不是实际的内存地址,因此不能用于指针算法。

返回引用的概念可能会非常混乱,特别是对于初学者,因此一个示例将是有帮助的。

$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