无法通过类扩展SimplePie函数

时间:2012-06-13 23:22:57

标签: php class extends simplepie

我一直在尝试扩展SimplePie以反向排序Feed。我用变量$ events区分的第二个Feed是我想首先显示“最早”日期的事件的源,因为该事件最接近发生。

我一直在使用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');
    }

}
然而,它似乎没有起作用。我甚至直接从上面的doc中复制并粘贴了代码,尝试按字符串长度对feed进行排序,这也不起作用。

如果我直接进入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();

?>

2 个答案:

答案 0 :(得分:0)

你有

$events->enable_order_by_date(false);

这会完全禁用排序,导致您的商品无法排序。 (这是一个名字很糟糕的方法。)

答案 1 :(得分:0)

我弄清楚问题是什么。 SimplePie不喜欢我在数组中使用单个Feed。

我改变了这个......

//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');

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