我正在使用带有此代码的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));
}
...
}
Run Code Online (Sandbox Code Playgroud)
函数定义的开头是什么意思,以及我如何使用这样的库(在一个简单的例子中)
tro*_*skn 15
如前所述,它正在返回一个引用.在PHP 4中,对象按值分配,就像任何其他值一样.这非常不直观,与大多数其他语言的工作方式相反.
为了解决这个问题,引用被用于指向对象的变量.在PHP 5中,很少使用引用.我猜这是遗留代码或代码试图保持与PHP 4的向后兼容性.
这在 PHP 中通常称为Returning reference或Returning by reference。
当您想使用函数查找引用应该绑定到哪个变量时,按引用返回很有用。不要使用按引用返回来提高性能。引擎将自动对此进行优化。仅当您有有效的技术原因时才返回引用。
PHP 中的引用只是分配给变量内容的另一个名称。PHP 引用不像 C 编程中的指针,它们不是实际的内存地址,因此它们不能用于指针运算。
返回引用的概念可能非常令人困惑,尤其是对于初学者而言,因此示例会有所帮助。
$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
Run Code Online (Sandbox Code Playgroud)
getPopulationCount()
用前面定义的函数&
,返回对内容或值的引用$populationCount
。所以,递增$countryPopulation
,也递增$populationCount
。