innoscience/comrade-opml

Comrade 需要帮助处理 OPML,是吗?我们可以一起读写 OPML 数据,没问题。用 PHP 实现既符合规范又简单。

1.0.0 2014-03-25 02:53 UTC

This package is not auto-updated.

Last update: 2024-09-28 16:02:38 UTC


README

Comrade 需要帮助处理 OPML,是吗?我们可以一起读写 OPML 数据,没问题。用 PHP 实现既符合规范又简单。

Build Status

版权 (C) 2014 Brandon Fenning

需求

兼容 PHP 5.3+

安装

innoscience/comrade-opml 添加到 composer.json 文件中

"require": {
    "innoscience/comrade-opml": "dev-master"
}

之后,运行 composer update

ComradeOPML 命名空间为 Innoscience\ComradeOPML,在需要它的任何文件顶部使用这个

use Innoscience\ComradeOPML\ComradeOPML;

使用方法

导入和读取 OPML 文件

$document = ComradeOPML::importFile('file.opml');

foreach ($document->getAllCategories() as $category) {

	echo '<h2>'.$category->getText().'</h2>';

	foreach ($category->getAllFeeds() as $feed) {
		echo $feed->getText().' - '.$feed->getXmlUrl().'</br>';
	}
}

创建和导出 OPML 文件

$document = ComradeOPML::newDocument();

$document->addCategory('News')
	->addFeed('Awesome News', 'http//awesome.news/rss')
	->addFeed('Good Times', 'http//good.times/rss')
	->addFeed('Best News', 'http//best.news/rss');

$document->addFeed('Food', 'Recipe Site', 'http://recipe.site/rss');
$document->addFeed('Food', 'Succulent Soups', 'http://succulent.soups/rss');

echo $document;

// # Or write to a file

ComradeOPML::exportFile($document, __DIR__.'/data/new.opml');

操作 OPML 数据

$document = ComradeOPML::newDocument();

$document->addCategory('Superfluous')
	->addFeed('Useless Things', 'http//uselesss.things/rss');

$document->addCategory('News')
	->addFeed('Horrible News', 'http//horribe.news/rss')
	->addFeed('Good Times', 'http//good.times/rss');

$document->removeCategory('Superfluous');
$document->getCategory('News')->removeFeed('http//horribe.news/rss');

类和方法

Innoscience\ComradeOPML\ComradeOPML

ComradeOPML 类是一个超级有用的 ComradeOPML 组件的工厂类。

Comrade::importString($string) : 以字符串格式导入 OPML 文件,返回一个 Document

Comrade::importFile($filePath) : 直接导入 OPML 文件,返回一个 Document

Comrade::newDocument() : 创建一个新的 Document 实例。这也是一种写 new \Innoscience\ComradeOPML\Resource\Document 的花哨方式;

Comrade::exportFile(Document $document, $filePath) : 将 Document 导出为 OPML 文件

Innoscience\ComradeOPML\Resource\Document

Innoscience\ComradeOPML\Resource\Document 类(我们称之为 Document)是许多魔法发生的地方。

$document->addCategory($category, $title = '') : 添加一个类别,返回创建的 Category 实例。必需的 $category 参数是 text 属性,$titletitle 属性。

$document->getCategory($category) : 通过 text 属性获取一个类别,返回创建的 Category 实例。

$document->getAllCategories() : 获取所有类别,返回一个包含 Category 实例的数组。

$document->removeCategory() : 通过 text 属性移除一个类别及其订阅源。返回 Document 实例。

$document->addFeed($category, $text, $xmlUrl, $title = '', $htmlUrl = '', $type = 'rss') : 向给定的类别添加一个订阅源。返回 Document 实例。

$document->parse($xmlString) : 将 OPML 数据解析到 Document 实例中,如果它有现有数据,则附加到文档中。返回 Document 实例。

$document->setDomInstance($instance) : 传递一个替代的 DOMDocument 实例以用于导出。

$document->output() : 返回格式化的 OPML 文档。

echo $document : 与上面相同,返回格式化的 OPML 文档。

头部属性方法

$document->setTitle($string) : 设置 Documenthead 中的 title 属性

$document->getTitle() : 获取 Documenthead 中的 title 属性

$document->setDateCreated($string) : 设置 Documenthead 中的 dateCreated 属性

$document->getDateCreated() : 获取 Documenthead 中的 dateCreated 属性

$document->setDateModified($string) : 设置 Documenthead 中的 dateModified 属性

$document->getDateModified() : 获取 Documenthead 中的 dateModified 属性

$document->setOwnerName($string) : 设置 Documenthead 中的 ownerName 属性

$document->getOwnerName() : 获取 Documenthead 中的 ownerName 属性

$document->setOwnerEmail($string) : 设置 Documenthead 中的 ownerEmail 属性

$document->setOwnerEmail() : 获取 Documenthead 中的 ownerEmail 属性。

$document->setExpansionState($string) : 设置 Documenthead 中的 expansionState 属性。

$document->getExpansionState() : 获取 Documenthead 中的 expansionState 属性。

$document->setVertScrollState($string) : 设置 Documenthead 中的 vertScrollState 属性。

$document->getVertScrollState() : 获取 Documenthead 中的 vertScrollState 属性。

$document->setWindowTop($string) : 设置 Documenthead 中的 windowTop 属性。

$document->getWindowTop() : 获取 Documenthead 中的 windowTop 属性。

$document->setWindowLeft($string) : 设置 Documenthead 中的 windowLeft 属性。

$document->getWindowLeft() : 获取 Documenthead 中的 windowLeft 属性。

$document->setWindowBottom($string) : 设置 Documenthead 中的 windowBottom 属性。

$document->getWindowBottom() : 获取 Documenthead 中的 windowBottom 属性。

$document->setWindowRight($string) : 设置 Documenthead 中的 windowRight 属性。

$document->getWindowRight() : 获取 Documenthead 中的 windowRight 属性。

Innoscience\ComradeOPML\Resource\Category

$category->addFeed($text, $xmlUrl, $title = '', $htmlUrl = '', $type = 'rss') : 向 Category 添加 Feed,返回 Category 实例。

$category->getFeed($xmlUrl) : 返回给定 feed 的 Feed 实例。

$category->getAllFeeds() : 返回给定 CategoryFeed 实例数组。

$category->removeFeed($xmlurl) : 从 Category 中移除给定的 feed。

$category->setText($string) : 设置 Categorytext 属性,这是必需的。返回 Category 实例。

$category->getText() : 获取 Categorytext 属性。

$category->setTitle($string) : 设置 Categorytitle 属性。返回 Category 实例。

$category->getTitle() : 获取 Categorytitle 属性。

Innoscience\ComradeOPML\Resource\Feed

$feed->getCategory() : 返回 feed 的 Category text 属性。

$feed->getText() : 返回 Feedtext 属性。

$feed->setText($string) : 设置 Feedtext 属性。

$feed->getXmlUrl() : 返回 FeedxmlUrl 属性。

$feed->setXmlUrl($string) : 设置 FeedxmlUrl 属性。

$feed->getTitle() : 返回 Feedtitle 属性。

$feed->setTitle($string) : 设置 Feedtitle 属性。

$feed->getHtmlUrl() : 返回 FeedhtmlUrl 属性。

$feed->setHtmlUrl($string) : 设置 FeedhtmlUrl 属性。

$feed->getType() : 返回 Feedtype 属性。

$feed->setType($string) : 设置 Feedtype 属性。

测试

ComradeOPML 完全经过单元测试。测试位于 ComradeOPML 包的 tests 目录中,可以在包的基本目录中使用 phpunit 运行。

许可证

ComradeOPML 根据 GPLv2 许可。