mekras/atompub

Atom发布协议支持库

v1.0.0 2016-08-17 14:24 UTC

This package is auto-updated.

Last update: 2024-08-29 04:37:31 UTC


README

Latest Stable Version License Build Status Coverage Status

目的

此库旨在以面向对象的方式与AtomPub文档一起使用。它不包含下载或显示文档的功能。

此库是Atom包的扩展。

解析文档

use Mekras\Atom\Document\EntryDocument;
use Mekras\Atom\Document\FeedDocument;
use Mekras\Atom\Exception\AtomException;
use Mekras\AtomPub\Document\CategoryDocument;
use Mekras\AtomPub\Document\ServiceDocument;
use Mekras\AtomPub\DocumentFactory;

$factory = new DocumentFactory;

$xml = file_get_contents('http://example.com/atom');
try {
    $document = $factory->parseXML($xml);
} catch (AtomException $e) {
    die($e->getMessage());
}

if ($document instanceof CategoryDocument) {
    $categories = $document->getCategories();
    //...
} elseif ($document instanceof ServiceDocument) {
    $workspaces = $document->getWorkspaces();
    //...
} elseif ($document instanceof FeedDocument) {
    $feed = $document->getFeed();
    //...
} elseif ($document instanceof EntryDocument) {
    $entry = $document->getEntry();
    //...
}

创建条目

use Mekras\AtomPub\DocumentFactory;

$factory = new DocumentFactory;
$document = $factory->createDocument('atom:entry');
$entry = $document->getEntry();
$entry->addId('urn:entry:0001');
$entry->addTitle('Entry Title');
$entry->addAuthor('Author 1')->setEmail('foo@example.com');
$entry->addContent('<h1>Entry content</h1>', 'html');
$entry->addCategory('tag1')->setLabel('Tag label')->setScheme('http://example.com/scheme');
$entry->addUpdated(new \DateTime());

// Suppose that $httpClient is some kind of HTTP client...
$httpClient->sendRequest('POST', 'http://example.com/', (string) $document);