[PHP]Atom 1.0形式のフィードを作成するライブラリ

Facebook にシェア
Delicious にシェア
LINEで送る
Pocket

PHP を使って Atom 1.0 形式でのフィードを自動生成する場合、「PHP Universal Feed Generator」というライブラリを使うのが一般的ですが、勉強も兼ねて自分で簡易なライブラリを作ってみました。
主要な機能は備えていますが RFC 4287 をすべてカバーしているわけではないので必要に応じて機能を追加して下さい。

Download
Ver. 1.1.1

特にライセンス上の制限は設けませんが、無保証ですのでご利用の際は自己責任で使用して下さい。(CC0)

・使用例

<?php
include 'AtomFeed.php';
include 'AtomEntry.php';

$atom = new AtomFeed(['xml:lang' => 'ja']);
$atom->title('Sample Website');
$atom->link('http://example.com');
$atom->link('http://example.com/feed', 'self');
$atom->id('http://example.com/feed');
$atom->updated('2015-01-01 12:23:45');
$atom->author([
    'name' => 'My Name',
    'email' => 'user@example.com'
]);

$entry = new AtomEntry();
$entry->title('タイトル 1');
$entry->link('http://example.com/1');
$entry->id('http://example.com/1');
$entry->summary('これは最初の記事です。');
$entry->updated('2015-01-02 03:04:05');
$entry->author([
    'name' => 'My Name',
    'email' => 'user@example.com'
]);
$atom->addEntry($entry);

$entry = new AtomEntry();
$entry->title('タイトル 2');
$entry->link('http://example.com/2');
$entry->id('http://example.com/2');
$entry->summary('2つ目の記事です。');
$entry->updated('2015-01-03 04:05:06');
$entry->author([
    'name' => 'My Name',
    'email' => 'user@example.com'
]);
$atom->addEntry($entry);

header('Content-Type: application/atom+xml');
echo $atom->saveXml();

・出力結果

<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
  <title type="html"><![CDATA[Sample Website]]></title>
  <link href="http://example.com"/>
  <link href="http://example.com/feed" rel="self"/>
  <id>http://example.com/feed</id>
  <updated>Thu, 01 Jan 2015 12:23:45 +0900</updated>
  <author>
    <name>My Name</name>
    <email>user@example.com</email>
  </author>
  <entry>
    <title type="html"><![CDATA[タイトル 1]]></title>
    <link href="http://example.com/1" rel="related"/>
    <id>http://example.com/1</id>
    <summary type="html"><![CDATA[これは最初の記事です。]]></summary>
    <updated>Fri, 02 Jan 2015 03:04:05 +0900</updated>
    <author>
      <name>My Name</name>
      <email>user@example.com</email>
    </author>
  </entry>
  <entry>
    <title type="html"><![CDATA[タイトル 2]]></title>
    <link href="http://example.com/2" rel="related"/>
    <id>http://example.com/2</id>
    <summary type="html"><![CDATA[2つ目の記事です。]]></summary>
    <updated>Sat, 03 Jan 2015 04:05:06 +0900</updated>
    <author>
      <name>My Name</name>
      <email>user@example.com</email>
    </author>
  </entry>
</feed>

クラスファイル「AtomFeed.php」と「AtomEntry.php」をインクルードし、「new AtomFeed()」を使ってインスタンスを作ります。あとは項目ごとに AtomEntry を作成して 親となる AtomFeed に追加していきます。
主要なメソッドと引数は以下のとおりです。

・AtomFeed 主要メソッド

<feed> として必須なものは id、title、updated です。
サイト全体に関する情報を記入します。

__construct(属性の配列)
save(保存先)
saveXML()
title(タイトル, type属性)
subtitle(サブタイトル, type属性)
link(リンク先, rel属性, type属性, title属性, length属性)
updated(最終更新日時の文字列)
id(フィードURLなどの一意な文字列)
addCustomElement(要素名, 値, 属性の配列, CDATAの有無)

・AtomEntry 主要メソッド

<entry> として必須なものは id、title、updated です。
記事やページに関する情報を記入します。一つの entry がひとつの記事に対応しているので、記事数に応じて複数作成する必要があります。

title(タイトル, type属性)
link(href属性, rel属性, type属性, title属性, length属性)
updated(最終更新日時の文字列)
published(作成日時の文字列)
author(キー&値の配列)
contributor(キー&値の配列)
summary(要約, type属性)
content(本文, type属性, src属性)
category(term属性, scheme属性, label属性)
addCustomElement(要素名, 値, 属性の配列, CDATAの有無)

作成したフィードを HTML ファイルからリンクするには <head> に次のタグを挿入します。

<link rel="alternate" type="application/atom+xml" title="タイトル" href="ファイルの場所" />

参考サイト: 『The Atom Syndication Format』


Similar Posts:




  • This entry was posted in PHP and tagged . Bookmark the permalink.

    コメントを残す

    メールアドレスが公開されることはありません。