4

线

$db =& JFactory::getDBO();

给我这个E_STRICT

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

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

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

4

1 回答 1

5

这确实是一个问题,因为这不是评论。但是,如果您在那里问这个问题,他们会如此迅速地否决这个问题,您的脑袋就会旋转。在寻求帮助之前,你真的应该用谷歌搜索这些东西,因为这是有据可查的。仅此警告就足以回答您的问题。

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

所以,你可以这样做:

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

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

于 2012-08-16T20:26:35.497 回答