当前位置:  开发笔记 > 编程语言 > 正文

使用&符号启动PHP函数意味着什么?

如何解决《使用&符号启动PHP函数意味着什么?》经验,为你挑选了2个好方法。

我正在使用带有此代码的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> Dominic Rodg..:

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

当您想要使用函数来查找引用应该绑定到哪个变量时,通过引用返回很有用.不要使用按引用返回来提高性能.引擎将自动对其进行自动优化.只有在有正当技术理由的情况下才返回引用.

请参阅返回参考.


是的 - 我只是这样称呼它.

2> troelskn..:

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

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


@WildlyInaccurate:默认情况下通过引用分配对象,这在.NET和Java(我认为)中发生的情况非常不直观.在大多数其他语言中,分配是通过复制完成的,无论你是否有"对象"或原语或其他什么,而且自从时间开始就是这种情况,这就是世界应该坚持的.
@Alex:在这种情况下,他们可能会这样做是为了保护那些使用php4的休闲黑客.你不应该在自己的代码中执行此操作 - 它已被弃用.
一些东西是否直观可能是相当主观的.但对于与PHP类似的语言,规范是通过引用传递对象.关于OOP,我认为这是最直观的方式,因为OOP是关于封装状态,所以程序通常会引用该状态,而不是克隆它.
"这是非常不直观的,与大多数其他语言的工作方式相反",我不能不同意.
推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有