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

Pocket

PHP を使って Atom 1.0 形式でのフィードを自動生成する場合何らかのライブラリを使うのが一般的ですが、勉強も兼ねて自分で簡易なライブラリを作ってみました。
主要な機能は備えていますが 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:




コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です