【问题标题】:Can't get SimplePie function to extend with class无法使用类扩展 SimplePie 函数
【发布时间】:2012-06-13 23:22:56
【问题描述】:

我一直在尝试扩展 SimplePie 以按相反顺序对提要进行排序。我用变量 $events 区分的第二个提要是我想首先显示“最旧”日期的事件提要,因为该事件最接近发生。

我一直在使用 SimplePie 的文档 Simple Pie Custom Sort 创建这些代码行来实现这一点,

class SimplePie_Custom_Sort extends SimplePie {

    function sort_items($a, $b) {

         return $a->get_date('U') >= $b->get_date('U');
    }

}

但它似乎不起作用。我什至直接从上面的文档中复制并粘贴了代码,以尝试按字符串长度对提要进行排序,但这也不起作用。

如果我直接进入 simplepie.inc 文件并在那里编辑排序函数,我可以让两个提要以相反的顺序显示。所有这些原因让我相信我尝试使用 Simple_Pie_Custom_Sort 扩展函数的方式存在错误。或者,也许我正在尝试做一些 SimplePie 能够做到的事情。

我已经上传了 simplepie.inc 文件的新副本,想知道我是否在某个时候不小心保存了它。

我觉得我可能在某个地方犯了一个愚蠢的错误。我很感激有人能提供。我正在使用的整个代码块如下。谢谢。

<?php

//TURN OF ERROR REPORTING
//error_reporting(0);

//INCLUDE SIMPLEPIE (PULLS RSS FEED)
require_once("inc/simplepie.inc");

// Extend the SimplePie class and override the existing sort_items() function with our own.
class SimplePie_Custom_Sort extends SimplePie {

    function sort_items($a, $b)
{
    return $a->get_date('U') >= $b->get_date('U');
}

}

//NEW SIMPLEPIE
$news = new SimplePie();

//SET LOCATIONS OF FEEDS
$news->set_feed_url(array(
     'http://rss-feed-url-example.rss'
));


//SET UP CACHING
$news->enable_cache(false);
//$news->set_cache_location('cache');
//$news->set_cache_duration(1800);

//START THE PROCESS
$news->init();

//HANDLE FEED TYPE
$news->handle_content_type();





//NEW SIMPLEPIE USING CUSTOM SORTING
$events = new SimplePie_Custom_Sort();

//SET LOCATIONS OF FEEDS
$events->set_feed_url(array(
     'http://rss-feed-url-example.rss'
));

//ANOTHER POSSIBLE NEED FOR SORTING RSS DIFFERENTLY
$events->enable_order_by_date(false);

//SET UP CACHING
$events->enable_cache(false);
//$events->set_cache_location('cache');
//$events->set_cache_duration(1800);

//START THE PROCESS
$events->init();

//HANDLE FEED TYPE
$events->handle_content_type();

?>

【问题讨论】:

  • 你得到了什么,错误信息,还有你运行的是什么版本的 PHP?如果您收到已弃用的参考错误,您可以通过删除所有 =& 并将它们替换为 simplepie.inc 中的 = 来解决此问题。
  • PHP 版本 5.2.17。我没有收到任何错误,这是奇怪的部分。据我所知,它应该可以工作。我会尝试替换=&。我在脸书上发表了评论。我想我应该在这里发表评论。
  • 我刚刚运行了 SimplePie 附带的可比性测试。一切都在那里检查。

标签: php class extends simplepie


【解决方案1】:

你有

$events->enable_order_by_date(false);

这会完全禁用排序,导致您的项目无法排序。 (这是一个名字不好的方法。)

【讨论】:

  • 瑞恩,感谢您的建议。我删除了那行代码,但我仍然没有得到我正在寻找的结果。我相信你是对的,那句话让我很伤心。我将继续努力解决问题。
【解决方案2】:

我发现了问题所在。 SimplePie 不喜欢我将单个提要放在一个数组中。

我改变了这个...

//SET LOCATIONS OF FEEDS
$events->set_feed_url(array(
   'http://rss-feed-url-example.rss'
));

到这里……

//SET LOCATIONS OF FEEDS
$events->set_feed_url('http://www.coloradotechnology.org/resource/rss/events.rss');

如果有人能详细说明导致问题的原因,我很想听听更好的解释。

【讨论】:

  • 可能在内部 SimplePie 创建了一个多源实例,因为您传递了一个数组。然后事情就不顺利了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-15
  • 1970-01-01
  • 2021-02-13
  • 2019-12-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多