シンプル&パワフルなPHPライブラリ rhacoを使ってみよう!

第2回 ライブラリとして使うrhaco

この記事を読むのに必要な時間:およそ 2.5 分

HTML出力をする

RSSを読み込むことはこれでできました。折角なので,HTMLに出力してみましょう。 rhacoのテンプレートエンジンも,単体で利用することができるので,これを使ってみましょう。

<?php
require '/path/to/rhaco/Rhaco.php';
Rhaco::import('tag.feed.FeedParser');
Rhaco::import('tag.HtmlParser');

$items = FeedParser::getItem('http://gihyo.jp/feed/rss1');
$parser = new HtmlParser(dirname(__FILE__). '/feed.html');
$parser->setVariable('items', $items);
$parser->write();

コードを上のように書き換えたら,テンプレートを記述します。/path/to/www/feed.html を作成してください。

テンプレートの詳細な記法については,次回以降に実践アプリ作成で解説して行きます。

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>feed parser</title>
</head>
<body>
<h1>Feed Parser</h1>
<ul rt:param="items" rt:var="item">
    <li><a href="{$item.link}" target="_blank">{$item.title}</a></li>
</ul>
</body>
</html>

http://localhost/feed.php をブラウザで確認してみましょう。このような画面が表示されます。

画像

複数フィードをまとめる

これまで,FeedParser::getItemではひとつのRSSフィードのみを扱ってきましたが,FeedParser::getItemは複数のRSSフィードをまとめて読み込むことができます。また,FeedのAuto Discovery※3にも対応しています。

ここでは,複数フィードを取得してマージし,ひとつのRSS2.0フィードとして出力する例を紹介します。

※3

HTMLファイルのlink要素からRSSなどのフィードURLを取得する機能。

feed_merge.phpというファイルを作成し,次のようなコードを記述してください。

<?php
require '/path/to/rhaco/Rhaco.php';
// ライブラリのインポート
Rhaco::import('tag.feed.FeedParser');
Rhaco::import('tag.feed.Rss20');

// $feeds は,配列を用いても構いません
$feeds = <<< FEEDS
http://gihyo.jp/feed/rss1
http://rhaco-users.jp/
FEEDS;
// フィードの取得
$items = FeedParser::getItem($feeds);

$new_feed = new Rss20();
$new_feed->setChannel(
    'Mixed Feed', // rssのtitle
    '複数フィードをマージするサンプル', // rssのdescription
);
foreach($items as $item){
    $new_feed->setItem($item);
}
$new_feed->output();

FirefoxやSafariなど,RSSが読み込めるアプリケーションで http://localhost/feed_merge.php を開くと,RSSとして出力されていることがわかります。

画像

まとめ

rhacoをライブラリとして使用する方法,特にフィード処理をメインに解説をしました。その他の機能についてもそれぞれ単独で利用することができます。次回以降の記事で,気になる機能のみを使いたくなった場合,今回の記事を参考にすると導入しやすいかもしれません。

今回紹介したライブラリのほかにも,rhacoにはたくさんのライブラリがあります。また,今回紹介したライブラリについても一部の機能しか紹介していません。rhacoのライブラリのAPI Referenceはウェブで見ることができます。これを参考にして,ライブラリとして使うrhacoに是非チャレンジしてみてください。

著者プロフィール

佐藤佳祐(さとうけいすけ)

北海道の大学に在籍し,現在は絶賛就職活動中。nequalに所属し,PEARリポジトリサービス「Openpear」開発を担当。最近はrhaco2と格闘する日々。お仕事の話,待ってます。

URLhttp://riaf.jp/