Dealing with E_STRICT in Joomla


Dealing with E_STRICT in Joomla

$db =& JFactory::getDBO();

给我这个和E_STRICT

严格的标准:只有变量应该通过引用分配

这到底是什么意思? 我正在使用JFactory就像文档中所说的那样。 我应该担心吗?

谷歌搜索错误只会给我一群 Joomla 人说我应该禁用E_STRICT。 我宁愿不走简单的方法,因为我正在努力提高我的技能。

这确实是SO的问题,因为这不是评论。但是,如果你在那里问这个问题,他们会这么快就投反对票,你的头会旋转。在寻求帮助之前,您应该真正谷歌这些事情,因为这有据可查。仅此警告就足以回答您的问题。

但是,此错误的原因是因为它是一个类方法,而不是变量。还有一个静态的启动。这种严格的警告,任何警告或错误都应该始终被倾听,告诉你没有什么可参考的。引用会自动复制您对$db所做的任何更改,并将它们应用于它所引用的任何变量,从而有效地克隆它。所以现在你开始看到一个问题。正如我所说,您没有引用变量,而是引用的方法的返回值,该方法只是内存的一部分,不能引用。

因此,您可以这样做:

$temp = JFactory::getDBO();
$db =& $temp;

它会很好地工作。但是,这是完全没有必要的。这里完全不需要引用。您真正想做的只是将该方法的返回值设置为变量,并在代码的其余部分中使用它。通常,特别是对于刚开始编程的人来说,引用是不必要的。您可以通过将前一个变量分配给新变量,进行更改,然后将新变量重新赋值回旧变量来完成相同的操作。不要理会参考,直到你学到更多东西并且可以更好地理解它。即使经过多年的编程,我也很少使用它。