raicem / reddit-public-api-wrapper
Reddit公共API的简单封装
1.0.0
2018-08-20 18:30 UTC
Requires
- php: 7.*
- ext-curl: *
Requires (Dev)
- phpunit/phpunit: ^7.3
This package is auto-updated.
Last update: 2024-09-18 06:37:08 UTC
README
Reddit通过在正常URL末尾添加 .json 提供了对其数据的非常方便的访问。例如,https://www.reddit.com/r/formula1.json 将呈现json响应。
这是一个围绕Reddit此功能的非常简单的封装。旨在提供对子版块和用户数据的简单访问。
1. 安装
使用 Composer 作为依赖项安装
composer require raicem/reddit-public-api-wrapper
2. 实例化
use RedditWrapper\Wrapper; use RedditWrapper\WrapperClient; $wrapper = new Wrapper(new WrapperClient());
3. 查询
3.1. 子版块查询
获取特定子版块的信息。
use RedditWrapper\Queries\SubredditQuery; use RedditWrapper\Enums\SubredditSort; use RedditWrapper\Enums\SubredditSortTime; $query = new SubredditQuery([ 'subreddit' => 'formula1', ]); $response = $wrapper->fetch($query);
您可以在查询中添加排序选项,以便在子版块中获取最佳、热门、上升、争议性帖子。您可以使用 RedditWrapper\Enums\SubredditSort 和 RedditWrapper\Enums\SubredditSortTime 提供的常量。
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. 用户查询
获取属于用户的源。
use RedditWrapper\Queries\UserQuery; $query = new UserQuery([ 'username' => 'unidan', ]); $response = $wrapper->fetch($query);
所有这些查询都扩展了包中的 QueryInterface。因此,您可以在代码库中创建自己的查询,实现 QueryInterface,然后将它提供给 Wrapper。
4. 魔法功能
4.1. 包装器上的 __call 方法
我相信这个库的主要功能将是获取子版块信息。我想要尽可能简化这个功能。
因此,您不需要创建新的查询,只需在这个包装器上将子版块名称作为方法调用即可。
use RedditWrapper\Wrapper; use RedditWrapper\WrapperClient; $wrapper = new Wrapper(new WrapperClient()); $response = $wrapper->formula1();
包装器上的 fetchSimple 方法
在获取子版块信息时,Reddit发送了大量的信息,这些信息可能并不必要。默认响应可能很难理解。fetchSimple 方法删除所有杂乱的信息,并尝试仅使用更通用的值呈现响应。
$query = new SubredditQuery([ 'subreddit' => 'formula1', 'sort' => SubredditSort::TOP, 'sortTime' => SubredditSortTime::WEEK, ]); $response = $wrapper->fetchSimple($query);
fetchSimple 方法返回这些值。此方法仅适用于 SubredditQuery 实例。