https://github.com/raicem/reddit-public-api-wrapper
A simple wrapper for Reddit's public API
https://github.com/raicem/reddit-public-api-wrapper
api-wrapper php reddit
Last synced: 5 months ago
JSON representation
A simple wrapper for Reddit's public API
- Host: GitHub
- URL: https://github.com/raicem/reddit-public-api-wrapper
- Owner: raicem
- License: mit
- Created: 2018-08-20T18:37:32.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2018-08-20T18:53:55.000Z (almost 8 years ago)
- Last Synced: 2025-07-19T09:53:00.700Z (11 months ago)
- Topics: api-wrapper, php, reddit
- Language: PHP
- Size: 18.6 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Reddit Public API PHP Wrapper
===
Reddit provides a very convenient access to its data just by adding `.json` to the end of normal URLs. For example, `https://www.reddit.com/r/formula1.json` will present you the json response.
This is a very simple wrapper around this feature of Reedit. Thies to grant easy access to subreddit and user data.
### 1. Installation
Install it as a dependency using [Composer](https://getcomposer.org/)
```bash
composer require raicem/reddit-public-api-wrapper
```
### 2. Instantiate
```php
use RedditWrapper\Wrapper;
use RedditWrapper\WrapperClient;
$wrapper = new Wrapper(new WrapperClient());
```
### 3. Queries
#### 3.1. Subreddit Query
Fetches information about a certain subreddit.
```php
use RedditWrapper\Queries\SubredditQuery;
use RedditWrapper\Enums\SubredditSort;
use RedditWrapper\Enums\SubredditSortTime;
$query = new SubredditQuery([
'subreddit' => 'formula1',
]);
$response = $wrapper->fetch($query);
```
You may add sort options to your query for best, top, rising, controversial posts in a subreddit.
You may use the constants provided with the `RedditWrapper\Enums\SubredditSort` and `RedditWrapper\Enums\SubredditSortTime`.
```php
use RedditWrapper\Queries\SubredditQuery;
use RedditWrapper\Enums\SubredditSort;
use RedditWrapper\Enums\SubredditSortTime;
$query = new SubredditQuery([
'subreddit' => 'formula1',
'sort' => SubredditSort::TOP,
'sortTime' => SubredditSortTime::WEEK,
]);
$response = $wrapper->fetch($query);
```
#### 3.2. User Query
Fetches the feed belonging to a user.
```php
use RedditWrapper\Queries\UserQuery;
$query = new UserQuery([
'username' => 'unidan',
]);
$response = $wrapper->fetch($query);
```
All of these queries extends the `QueryInterface` in the package. So you can create your own query implementing `QueryInterface` in your code base and then provide it to the `Wrapper`.
### 4. Magic Stuff
#### 4.1. __call method on the Wrapper
I believe the main function of this library will be to fetch subreddit information. I wanted to streamline that functionality as much as possible.
So without creating a new query, you may call the subreddit's name as a method on this wrapper.
```php
use RedditWrapper\Wrapper;
use RedditWrapper\WrapperClient;
$wrapper = new Wrapper(new WrapperClient());
$response = $wrapper->formula1();
```
#### 4.2. `fetchSimple` method on Wrapper
When fetching subreddit information, Reddit sends a lot of information that is probaby not neccessery. The default response can very difficult to get through. `fetchSimple` method removes all the clutter and tries to present response with only more general values.
```php
$query = new SubredditQuery([
'subreddit' => 'formula1',
'sort' => SubredditSort::TOP,
'sortTime' => SubredditSortTime::WEEK,
]);
$response = $wrapper->fetchSimple($query);
```
`fetchSimple` method returns these values. This method only works for `SubredditQuery` instances.
| Value |
| ------------ |
| title |
| id |
| thumbnail |
| permalink |
| num_comments |
| score |
| created |