PHPackages                             8fold/php-syndication - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. 8fold/php-syndication

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

8fold/php-syndication
=====================

A library for generating RSS and Atom feeds (XML)

0.1.1(2y ago)45MITPHPPHP ^8.1 | ^8.2

Since Nov 26Pushed 2y ago1 watchersCompare

[ Source](https://github.com/8fold/php-syndication)[ Packagist](https://packagist.org/packages/8fold/php-syndication)[ GitHub Sponsors](https://github.com/8fold)[ GitHub Sponsors](https://github.com/joshbruce)[ RSS](/packages/8fold-php-syndication/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (2)Dependencies (4)Versions (4)Used By (0)

8fold Syndication for PHP
=========================

[](#8fold-syndication-for-php)

A library for generating standards-compliant [web feeds](https://en.wikipedia.org/wiki/Web_feed) using both [Atom](https://validator.w3.org/feed/docs/atom.html) (recommended) and [RSS](https://cyber.harvard.edu/rss/) specifications.

Versions:

LibraryJSON FeedAtomRSScurrent1.11.02.0Installation
------------

[](#installation)

{how does one install the product}

Usage
-----

[](#usage)

{brief example of how to use the product}

### JSON Feed

[](#json-feed)

JSON Feed reference used:

When it comes to content, JSON feed is quite flexible; you may have:

1. Plain text content via the `content_text` member.
2. HTML content via the `content_html` member.
3. Or, both.

You must have at least one.

Therefore, we have added `content` as a required part of the initializer using a plain text string (`content_text`) or an instance of `ContentHtml` (`content_text`).

Further, you may call the `withExtraContent` method to use both. With that said, if both are of the same type, the content provided from the `withExtraContent` method will be used; last in overwrite rules.

Note: JSON Feed does not require a `content` member and is able to accept both plain text and html content types; using `content_text` and `context_html`. Both are optional, however, at least one of them must be present. Therefore, we require `content` as part of the initializer, which can accept a plain text string (`content_text`) or an instance of `ContentHtml`. We also give you the ability to

### Atom

[](#atom)

Atom specification reference used:

#### Authors

[](#authors)

Recommended

- Feed MUST contain at least one author element, unless all entries have an author element.
- Feed and Entries MAY have multiple authors.

#### Link

[](#link)

Recommended

- Must use `rel` attribute.
    - `rel` MAY be: alternate, enclosure, related, self, or via.
    - Default is alternate.
    - Feed MUST NOT have more than one alternate link.

### RSS

[](#rss)

RSS specification reference used:

Details
-------

[](#details)

We practice the art of the soft failure. As such, if a document is malformed, we return an empty string.

We **do not** sanitize the input; therefore, it is recommended you do so prior to initializing, building, and rendering the feed.

The fundamental approach is that the required elements for each feed (and sub-element) are required by the initializer of the Document (and sub-element). Recommended, but optional, elements are optional within the initializer. Strictly optional elements may be added by calling the corresponding method; most of which use the prefix `with`.

Note: Not all specifications explicitly state whether items (or entries) are required; however, a feed without items (or entries) seems odd, therefore, we require them for each feed type. Further, if an item (or entry) does not meet the criteria of the specification, the entire document will become an empty string. We will do what we can to enable you to explore the soft failure.

When possible, we will render elements and properties in the order they appear in the reference specification.

Other
-----

[](#other)

{links or descriptions or license, versioning, and governance}

###  Health Score

23

—

LowBetter than 27% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity8

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity50

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~489 days

Total

2

Last Release

778d ago

PHP version history (2 changes)0.1.0PHP ^8.1

0.1.1PHP ^8.1 | ^8.2

### Community

Maintainers

![](https://www.gravatar.com/avatar/3ff7aa36dc04c5b535cd71eadbf66038401edde0c9dfaa688bec4fc16c6d7e8b?d=identicon)[eightfold](/maintainers/eightfold)

---

Top Contributors

[![joshbruce](https://avatars.githubusercontent.com/u/15252830?v=4)](https://github.com/joshbruce "joshbruce (53 commits)")

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Code StylePHP\_CodeSniffer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/8fold-php-syndication/health.svg)

```
[![Health](https://phpackages.com/badges/8fold-php-syndication/health.svg)](https://phpackages.com/packages/8fold-php-syndication)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
