使用 & 符号启动 PHP 函数是什么意思?

2022-08-30 06:58:41

我正在使用带有以下代码的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));
    }
...
}

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


答案 1

函数名称前的 & 符号表示函数将返回对变量的引用,而不是值。

当您想要使用函数来查找引用应绑定到哪个变量时,按引用返回非常有用。不要使用按引用返回来提高性能。引擎将自动自行优化。仅当您有有效的技术原因时才返回引用。

请参见返回引用


答案 2

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

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


推荐