0

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

2 に答える 2

0

手始めに、 ForeachPHP OPP Basicsをご覧になることをお勧めします。

  • あなたforeachはどの方法でもありません
  • foreach('allitemscollected' as $feed){foreach最初の引数がarray_expressionである必要があるため、無効です
  • あなたのクラスは間違っています
  • 何も印刷またはエコーしませんでした
  • return $feed;早期に呼び出されたため、他のコードが見えなくなりました
  • $this->set(まだ存在しないメソッドが呼び出されました$this->set('collected_items', $collected_items);
  • simplexml_load_file2 番目の引数は、拡張された有効なクラス名である必要がありますが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

Grantland: College Basketball Team Previews: Indiana Hoosiers の攻撃的な火力には事欠きません。Tom Clean の優れた点は、それを使うことを決して恐れないことです。インディアナは昨シーズンのテンポで国の上位半分にかなり入っていました.1年余分にケミストリーがあったので、それは良い賭けです[...]


ノート: クリークは怪我からの見返りに輝きます

金曜日、2012 年 11 月 2 日 02:57:32 +0000

モーリス・クリークは、木曜日の夜のインディアナ・ウェスリアンとのエキシビション・ゲームの前半残り11分強で、ベンチから降りて、アッセンブリー・ホールのスコアラーズ・テーブルに向かって歩いた. クリークは公式スコアラーにチェックインし、20 か月以上考えていた瞬間を辛抱強く待ちました — [...]

  ....... So may more
于 2012-11-03T22:29:12.447 に答える
0

あなたの構造は2つのパラメーターを取りますが、単一のパラメーターで使用しました。

于 2012-11-03T20:51:21.420 に答える