2012-08-16 22 views
4

线中的Joomla

$db =& JFactory::getDBO(); 

与E_STRICT处理给了我这个与E_STRICT

严格的标准:只有变量应参考

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

谷歌搜索的错误只给了我一堆Joomla人说我应该禁用E_STRICT。我宁愿不采取简单的方式,因为我试图提高我的技能。

回答

4

这实在是个问题,因为这不是一个评论。但是,如果你在那里问过这个问题,他们很快就会低估你的头脑。在寻求帮助之前,你应该真的谷歌这些事情,因为这是有据可查的。仅仅这个警告就足以回答你的问题。

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

所以,你可以这样做:

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

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

+0

......你知道我用google搜索了吗,就像我在问题中所说的那样?另外,* docs *表示使用引用,这可能非常方便。 – SomeKittens 2012-08-16 20:43:57

+0

我的意思是如果你只是使用了错误信息,而不是那行代码。不过,我确实想念你说你使用了代码,我的道歉。我不是说“不要使用引用”我不是说引用。是的,他们是一个强大的工具,是的,他们非常漂亮。但他们更先进,可能会导致代码易读性问题。毕竟,谁在寻找一大堆代码中的“&”?我倾向于避免它们,使用它们的唯一“真正”原因是当您的代码要求最高性能时,因为它在其他地方执行的处理非常繁重。否则还有其他方法。 – mseancole 2012-08-16 23:51:39

+0

我*做了谷歌的错误消息.... – SomeKittens 2012-08-16 23:53:35