PHP返回引用-'&';有必要打电话吗?

PHP返回引用-'&';有必要打电话吗?,php,joomla,reference,Php,Joomla,Reference,我正在使用joomla,我已经通读了API,我注意到JFactory类的函数返回对对象的引用,但是我从internet收集的示例在使用函数时没有使用& 比如说Jfactory::getSession(),它返回对全局会话的引用。显示其定义为函数&getSession(params){code}——清楚地定义了引用返回。但是,他们将其称为$session=JFactory::getSession()不应该是$session=&JFactory::getSession() 它在中说明函数中有一个&,

我正在使用joomla,我已经通读了API,我注意到JFactory类的函数返回对对象的引用,但是我从internet收集的示例在使用函数时没有使用
&

比如说
Jfactory::getSession()
,它返回对全局会话的引用。显示其定义为
函数&getSession(params){code}
——清楚地定义了引用返回。但是,他们将其称为
$session=JFactory::getSession()不应该是
$session=&JFactory::getSession()

它在中说明函数中有一个
&
,调用者中有一个
=&
。我也经历过C编程,如果我错过了这样的事情,就会出现诸如“无效指针转换”之类的错误——这不是一个好的编程实践

正确的做法是什么

其他信息:

我使用Joomla1.7,我正在创建一个组件。我使用PHP5.3.8处理xampp,具体取决于:
-Joomla版本和您使用的PHP版本
-返回JFactory::getSession()方法的是什么

Joomla 1.5版与PHP4和PHP5兼容,1.6和1.7版仅与PHP5兼容

如果该方法返回一个对象,
&
在PHP4中是必需的:默认情况下,对象通过值传递/返回(出现对象的副本)。
&
避免复制。
在PHP5中,
&
是无用的:对象总是通过引用传递/返回(不会发生复制)

如果该方法返回任何其他内容,则不应使用
&
,但在某些非常罕见的情况下可能有用(例如,如果您有一个巨大的数组或字符串,并且您不希望在赋值中复制它们,则为了节省内存)

好的做法是,当方法签名也包含
&
时,始终在赋值中放置
&


在您的例子中,我认为您使用的是PHP5和Joomla的最新版本,因此不要使用
&
:这可能是Joomla源代码中的过时代码

现代PHP版本总是将对象作为引用返回,因此不再需要
=&
,实际上会抛出一条警告消息。使用=&的代码要么写得不好,要么很旧/过时,要么试图使用尽可能多的PHP版本,因此从定义上讲,无论如何都写得不好。这提醒了我Joomla实际上是多么糟糕。可能的重复,可能的重复,小心,通过引用返回与返回对象不同,因为后者只允许更改对象,但通过引用返回允许将变量完全更改为另一个对象,标量或诸如此类的对象。我想在线文档已经过时了。我在实际的源代码中没有看到
&
。在此处找到文档: