Atom Publishing Protocol support library
This library is designed to work with the AtomPub documents in an object-oriented style. It does not contain the functionality to download or display documents.
This library is an extension of the package 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('https://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('[email protected]');
$entry->addContent('<h1>Entry content</h1>', 'html');
$entry->addCategory('tag1')->setLabel('Tag label')->setScheme('https://example.com/scheme');
$entry->addUpdated(new \DateTime());
// Suppose that $httpClient is some kind of HTTP client...
$httpClient->sendRequest('POST', 'https://example.com/', (string) $document);