Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/aschmelyun/basic-feeds
📜✏️ A simple PHP library to generate RSS and Atom feeds
https://github.com/aschmelyun/basic-feeds
atom php rss xml
Last synced: 19 days ago
JSON representation
📜✏️ A simple PHP library to generate RSS and Atom feeds
- Host: GitHub
- URL: https://github.com/aschmelyun/basic-feeds
- Owner: aschmelyun
- License: mit
- Created: 2022-03-27T04:48:53.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2022-04-02T05:42:18.000Z (over 2 years ago)
- Last Synced: 2024-10-10T19:25:29.339Z (about 1 month ago)
- Topics: atom, php, rss, xml
- Language: PHP
- Homepage:
- Size: 21.5 KB
- Stars: 4
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Basic Feeds
This package provides a basic way of generating RSS 2 and Atom XML feeds in PHP using a simplified syntax. There are no external dependencies as this package relies on the built-in [SimpleXMLElement](https://www.php.net/manual/en/class.simplexmlelement.php) class.
## Installation
```bash
composer require aschmelyun/basic-feeds
```## Usage
Initialize a feed by using the `Feed::create()` method, passing in an array of attributes needed to set up your feed's base.
```php
use Aschmelyun\BasicFeeds\Feed;$feed = Feed::create([
'link' => 'https://example.com/blog',
'authors' => 'Andrew Schmelyun',
'title' => 'My Example Blog',
'feed' => 'https://example.com/feed.xml',
]);
```Then use the `entry()` method on the Feed object to attach entries to your feed.
```php
$feed->entry([
'title' => 'Post One',
'link' => 'https://example.com/blog/post-one',
'summary' => 'This is my summary',
'content' => 'This is my example content!
'
]);
```The `entry()` method can also expect multiple items at once, using a nested array.
```php
$feed->entry([
'title' => 'Post Two',
'link' => 'https://example.com/blog/post-two',
'summary' => 'This is my second summary',
'content' => 'This is my second example content!
'
], [
'title' => 'Post Three',
'link' => 'https://example.com/blog/post-three',
'summary' => 'This is my third summary',
'content' => 'This is my third example content!
'
]);
```You can then use either the `asAtom()` or `asRss()` method to compile the feed to the requested format and return it as an XML string:
```php
$xml = $feed->asAtom();
// $xml = $feed->asRss();
```## Requirements
There are a few required attributes, and they change based on the format(s) you choose.
For `Feed::create()` they are:
- **RSS**: `title`, `link`, `description`
- **Atom**: `title`, `link`, `authors`, `feed`For `entry()` they are:
- **RSS**: `title`, `link`, `description`
- **Atom**: `title`, `link`, `summary`, `content`## Extending
This package comes with an [interface](https://github.com/aschmelyun/basic-feeds/blob/main/src/Contracts/Generator.php) that you can use to help extend off of this package to create your own feed generator.
Check out the [Atom](https://github.com/aschmelyun/basic-feeds/blob/main/src/Generators/Atom.php) and [RSS](https://github.com/aschmelyun/basic-feeds/blob/main/src/Generators/Rss.php) classes to see how the included feed generators are structured.
## Testing
If you don't already have PHPUnit required in your current project, install this package with dev dependencies:
```bash
composer require aschmelyun/basic-feeds --dev
```Then run the PHPUnit tests:
```bash
./vendor/bin/phpunit
```## License
This package is licensed under the The MIT License. See [LICENSE](https://github.com/aschmelyun/basic-feeds/blob/main/LICENSE) for more details.