【问题标题】:Strict Standards: Non-static method DOMDocument::load() rss feed严格标准:非静态方法 DOMDocument::load() rss feed
【发布时间】:2015-02-19 17:26:45
【问题描述】:

我从几个 RSS 提要 joomla 模块中收到此错误。 (以下是其中一个示例 LightRSSFeedReader,但我在尝试过的其他人中遇到了问题)

Strict Standards: Non-static method DOMDocument::load() should not be called statically in /mnt/data/vhosts/casite-395567.cloudaccess.net/httpdocs/modules/mod_LightRSSFeedReader/tmpl/default.php on line 40

Notice: Trying to get property of non-object in /mnt/data/vhosts/casite-395567.cloudaccess.net/httpdocs/modules/mod_LightRSSFeedReader/tmpl/default.php on line 48

第 40 行内容为:$rss = DOMDocument::load("$rss_feed_url");

网络上有一些讨论使用“->”而不是“::”,但只是简单地更改它(当然是在覆盖中),但这只会产生更多错误。

还有一些关于从http://php.net/manual/en/domdocument.load.php 获取正确代码的方法,但我不知道它如何与“$rss”变量一起使用。

如您所知,我不是 PHP 编码员。

任何帮助都会受到广泛赞赏。

【问题讨论】:

  • 听起来 LightRSSFeedReader 是在没有考虑 E_STRICT 的情况下粗心开发的。较新版本的 PHP 在 E_ALL 错误报告设置中包含严格的警告,这可能就是为什么这对他们来说从来不是问题。
  • 它可能可以通过声明对象来修复,然后像$dom = new DOMDocument(); $rss = $dom->load($rss_feed_url);一样在其上调用load()
  • 如果您的第 3 方代码抛出大量 E_STRICT 警告,您可能只需要降低错误报告阈值以排除它们 stackoverflow.com/questions/9983286/…,因为修复是不切实际的。
  • 谢谢。我将首先尝试禁用 E_Strict 警告,因为这看起来很简单......而且它奏效了!但我会在网站启动后尝试您的第一个解决方案。再次感谢。
  • 您的问题现在解决了吗?如果答案是正确的,您可以考虑接受答案...

标签: php rss joomla3.0 rss-reader


【解决方案1】:

在您所指的确切页面上有一个示例:

<?php
$doc = new DOMDocument();
$doc->load('book.xml');
echo $doc->saveXML();
?>

您只能在实例上调用“加载”方法;所以你首先需要创建一个DOMDocument 瞬间,然后对其施加负载。

简而言之,正如@MichaelBerkowski 建议的那样:使用

$dom = new DOMDocument();
$rss = $dom->load($rss_feed_url);

【讨论】:

  • 我发现不寻常的地方 - DOMDocument::load() docs 实际上建议静态调用它,并带有警告。 此方法可以静态调用,但会发出 E_STRICT 错误。 在 PHP 5.4+ 时代,E_STRICT 更常见,该建议应该会消失。
猜你喜欢
  • 2013-03-31
  • 2015-05-08
  • 2013-05-08
  • 2013-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
相关资源
最近更新 更多