处理Joomla中的E_STRICT

时间:2012-08-16 14:55:23

标签: php joomla strict

该行

$db =& JFactory::getDBO();

通过E_STRICT

给我这个
  

严格标准:只能通过引用分配变量

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

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

1 个答案:

答案 0 :(得分:5)

这对于SO来说真的是个问题,因为这不是评论。但是,如果你曾经问过这个问题,那么他们就会很快将你的头部旋转。在寻求帮助之前,你应该真的谷歌这些东西,因为这有很好的记录。仅这一警告足以回答你的问题。

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

所以,你可以这样做:

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

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