benkle/feed-response

基于映射器的服务,方便使用 RSS 和 Atom 响应

dev-master 2017-10-18 18:21 UTC

This package is not auto-updated.

Last update: 2024-09-15 02:16:55 UTC


README

要求

安装

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