benkle / feed-response
基于映射器的服务,方便使用 RSS 和 Atom 响应
dev-master
2017-10-18 18:21 UTC
Requires
- php: >=5.6.0
- benkle/feed-interfaces: ^1.1
- psr/http-message: ^1.0
- symfony/http-foundation: ^3.3
Requires (Dev)
- benkle/feed-parser: ^2.0
- phpunit/phpunit: ^5.3
This package is not auto-updated.
Last update: 2024-09-15 02:16:55 UTC
README
要求
- PHP 5.6+
- benkle/feed-interfaces 1.1+
- symfony/http-foundation 3.3+
- psr/http-message 1.0+
安装
FeedResponse 可以使用 composer 的常规方式引入
composer require benkle/feed-response
使用方法
Feed 响应是通过一个工厂构建的,需要一些设置
use \Benkle\FeedInterfaces as FeedInterfaces; use \Benkle\FeedResponse\XmlMappers\Atom as Atom; use \Benkle\FeedResponse\XmlMappers\RSS20 as RSS20; use \Benkle\FeedResponse\Collections as Collections; use \Benkle\FeedResponse\FeedResponseFactory; // You need two feed mappers, each with a collection of mappers // for specific parts of the feed. $atomMappers = new Collections\FeedItemMapperCollection(); $atomMappers ->add(ItemInterface::class, new Atom\FeedItemMapper()) ->add(EnclosureInterface::class, new Atom\EnclosureMapper()) ->add(RelationLinkInterface::class, new Atom\RelationLinkMapper()); $atomMapper = new Atom\FeedMapper(); $atomMapper->setMapperCollection($atomMappers); $rssMappers = new Collections\FeedItemMapperCollection(); $rssMappers ->add(ItemInterface::class, new RSS20\FeedItemMapper()) ->add(EnclosureInterface::class, new RSS20\EnclosureMapper()) ->add(RelationLinkInterface::class, new Atom\RelationLinkMapper(true)); $rssMapper = new RSS20\FeedMapper(); $rssMapper->setMapperCollection($rssMappers); $feedResponseFactory = new FeedResponseFactory(); $feedResponseFactory ->setAtomMapper($atomMapper) ->setObjectMappers($objectMappers) ->setRssMapper($rssMapper) ->setFeedPrototype(/* Insert an instance of \Benkle\FeedInterfaces\FeedInterface here */) ->setRelationLinkPrototype(/* Insert an instance of \Benkle\FeedInterfaces\RelationLinkInterface here */);
之后,你可以简单地使用适当的 方法创建一个响应对象
$atomFeed = $feedResponseFactory->atom($head, $items, $relations); // For an Atom feed $rssFeed = $feedResponseFactory->rss($head, $items, $relations); // For an RSS 2.0 feed
这些方法允许对它的三个参数进行一些调整
$head
可以是...- 包含以下键的关联数组
\Benkle\FeedInterfaces\FeedInterface
的一个实例
$items
是任何类型的对象数组。实例\Benkle\FeedInterfaces\FeedItemInterface
将直接处理,对于其他类型的对象,您还需要一个匹配的对象映射器。$relations
是一个数组,其中的元素可以是以下这些\Benkle\FeedInterfaces\RelationLinkInterface
的一个实例- 一个键值对,映射到以下标签:
<link rel="key" href="value"/>
- 包含以下键的关联数组
待办事项
- 已将包含的集合类移动到实用工具包中(与
PriorityList
结合使用,来自 benkle/feed-parser)