在类中的PHP中解析Rss Feeds

时间:2012-11-03 20:46:49

标签: php class rss

从index.php页面呈现RSS提要并没有那么糟糕我已经看到了很多它的例子。但是我在上课时遇到了问题。这就是我所拥有的,我确信我有很多错误...... PHP不是我的强项,所以如果你能让我知道我哪里出错我会赞赏它......

<?php
class RssDisplay {

protected $fromrss;
protected $allitemscollected_feed;


public function __construct($urllink, $total_items){

    $this->fromrss = $urllink;
    $this->allitemscollected_feed = $total_items;

}

public function getItems($allitemscollected_feed){

    $feed = simplexml_load_file($this->fromrss, $this->allitemscollected_feed);

    return $feed;

    $collected_items[] =$feed;

    $this->set('collected_items', $collected_items);

}

foreach('allitemscollected' as $feed){
    $items->title;
    $items->pubDate;
    $items->description;


}


 } 

从我的索引这是我正在做的事情:

 $feed = new RssDisplay('http://feeds.feedburner.com/insidethehall?format=xml');

2 个答案:

答案 0 :(得分:0)

你的构造有两个参数,但你 将它用于单个参数。

答案 1 :(得分:0)

对于初学者,我建议您查看ForeachPHP OPP Basics,因为

  • 您的foreach不是任何方法
  • foreach('allitemscollected' as $feed){无效,因为foreach第一个参数必须为array_expression
  • 你上课错了
  • 您没有打印或回显任何内容
  • return $feed;被提前调用,这将使其他代码不可见
  • $this->set(方法不存在,但它被称为$this->set('collected_items', $collected_items);
  • simplexml_load_file第二个参数需要是扩展SimpleXMLElement但传递整数的有效类名

您的简单类看起来像这样

class RssDisplay {
    protected $maxItems;
    private $xml;

    public function __construct($url, $maxItems = 0) {
        $this->xml = simplexml_load_file($url, "SimpleXMLIterator");
        $this->maxItems = $maxItems;
    }

    public function getItems() {
        return $this->xml->channel->item;
    }

    public function simpleDisplay() {
        $it = ($this->maxItems == 0) ? $this->xml->channel->item : new LimitIterator($this->xml->channel->item, 0, $this->maxItems);
        foreach ( $this->xml->channel->item as $feed ) {
            printf("<div><h2><a href='%s'>%s</a></h2><i>%s</i><p>%s</p></div><br />", $feed->link, $feed->title, $feed->pubDate, $feed->description);
        }
    }
}


$rss = new RssDisplay("http://feeds.feedburner.com/insidethehall?format=xml");
$rss->simpleDisplay();

输出

格兰特兰预览印第安纳州

星期五,2012年11月2日19:22:21 +0000

格兰特兰德:大学篮球队预览:印第安纳州没有Hoosiers缺乏进攻火力,而Tom Crean的好处在于他从不害怕使用它。印第安纳上赛季在节奏的上半部分很好,并且在额外的一年的化学反应中,这是一个不错的选择[...]


笔记本:溪流从伤病中恢复过来

星期五,2012年11月2日02:57:32 +0000

莫里斯克里克替补出场,在上半场仅剩11分钟时走向大会堂得分手的桌子星期四晚上对阵印第安纳卫斯理的比赛。克里克与官方记分员一起检查,然后耐心地等待他已经考虑超过20个月的那一刻 - [...]

  ....... So may more