What does it mean to start a PHP function with an ampersand?
我正在使用包含以下代码的Facebook库:
1 2 3 4 5 6 7 8 | class FacebookRestClient { ... public function &users_hasAppPermission($ext_perm, $uid=null) { return $this->call_method('facebook.users.hasAppPermission', array('ext_perm' => $ext_perm, 'uid' => $uid)); } ... } |
函数定义开头的&;是什么意思,以及如何使用这样的库(在一个简单的示例中)
函数名前的和符号表示函数将返回对变量的引用,而不是对值的引用。
Returning by reference is useful when
you want to use a function to find to
which variable a reference should be
bound. Do not use return-by-reference
to increase performance. The engine
will automatically optimize this on
its own. Only return references when
you have a valid technical reason to
do so.
请参见返回引用。
如前所述,它返回一个引用。在php 4中,对象是按值分配的,就像其他值一样。这是非常不具说服力的,与大多数其他语言的工作方式相反。
为了解决这个问题,引用被用于指向对象的变量。在php 5中,很少使用引用。我猜这是为了保持与php 4向后兼容的遗留代码或代码。
在PHP中,这通常被称为返回引用或通过引用返回。
Returning by reference is useful when you want to use a function to
find to which variable a reference should be bound. Do not use
return-by-reference to increase performance. The engine will
automatically optimize this on its own. Only return references when
you have a valid technical reason to do so.
返回引用的PHP文档
PHP中的引用只是分配给变量内容的另一个名称。PHP引用与C编程中的指针不同,它们不是实际的内存地址,因此不能用于指针算术。
返回引用的概念可能非常混乱,特别是对于初学者来说,因此示例将很有帮助。
1 2 3 4 5 6 7 8 9 10 11 12 13 | $populationCount = 120; function &getPopulationCount() { global $populationCount; return $populationCount; } $countryPopulation =& getPopulationCount(); $countryPopulation++; echo"\$populationCount = $populationCount "; // Output: $populationCount = 121 echo"\$countryPopulation = $countryPopulation "; //Output: $countryPopulation = 121 |
用前面的