islem-kms / riot-api
Riot League of Legends & DataDragon API 的 PHP7 封装器(参考 Daniel Dolejska 的代码,仅作为分支)
Requires
- php: >=7.1
- ext-json: *
- guzzlehttp/guzzle: ^6
- nette/utils: ^2|^3
- psr/cache: ^1
- symfony/cache: >=4.3.8
- symfony/console: ^4|^5
Requires (Dev)
- phpunit/phpunit: ^6
This package is auto-updated.
Last update: 2024-09-22 00:07:56 UTC
README
版本 v4.0.1
目录
可用版本
简介
欢迎来到 RiotAPI PHP7 库仓库!该库的目的是为可能需要的人提供一个易于使用的库。这是一个完全面向对象的 API 封装器,用于 League of Legends 的 API。还包括一个小的 DataDragon API 封装器。
以下是一些实用的功能
- 速率限制缓存 和超过限制的预防 - 完全自动。
- 调用缓存 - 使库能够在给定时间段内重复使用已获取的数据 - 节省时间和密钥的速率限制。
- StaticData 端点 - 您可以像从未弃用一样处理 StaticData 端点。
- StaticData 链接 - 库可以自动将相关 StaticData 直接链接到返回的对象中。
- 自定义回调 - 您可以设置自定义函数,在请求处理之前或之后调用。
- 对象扩展 - 您可以向获取的 API 对象实现自己的方法,并在以后的工作中使用它们来简化工作。
- CLI 支持 - 在控制台中使用此库非常简单。
- 中间模式 支持 - 无论您的密钥是否处于
中间模式
,您都可以使用该库(这意味着当您跳转到生产环境时,您不需要做任何更改)。 - 对象无处不在 - API 调用返回特殊对象中的数据,这允许现代 IDE 提示现有属性和方法。
请主要参考 wiki 页面。此文件仅包含对库功能的简要介绍。
下载
下载并使用此库的最简单方法是使用 Composer。如果您还没有使用 Composer,您应该立即开始使用它!
在您的机器上安装 Composer 后,只需运行 composer require "dolejska-daniel/riot-api:^4"
命令即可将库准备好使用!
有关下载和初始设置的更多信息,请参阅 wiki 页面。
League of Legends API
资源版本
以下您可以找到已实现的API资源及其当前实现的版本。有关端点和资源的更多信息,请参阅维基页面。
初始化库
如何开始?
// Include all required files (installation via Composer is required) require_once __DIR__ . "/vendor/autoload.php"; use RiotAPI\LeagueAPI\LeagueAPI; use RiotAPI\LeagueAPI\Definitions\Region; // Initialize the library $api = new LeagueAPI([ // Your API key, you can get one at https://developer.riotgames.com/ LeagueAPI::SET_KEY => 'YOUR_RIOT_API_KEY', // Target region (you can change it during lifetime of the library instance) LeagueAPI::SET_REGION => Region::EUROPE_EAST, ]); // And now you are ready to rock! $ch = $api->getStaticChampion(61); // Orianna <3
在初始化库时,您可以设置很多其他设置 - 主要是为了启用特殊功能或修改库的默认行为。请参阅维基页面以获取库设置的全列表。
使用示例
使用LeagueAPI非常简单,只需看看如何根据召唤师名称获取召唤师信息。
// ...initialization... // this fetches the summoner data and returns SummonerDto object $summoner = $api->getSummonerByName('I am TheKronnY'); echo $summoner->id; // KnNZNuEVZ5rZry3I... echo $summoner->puuid; // rNmb6Rq8CQUqOHzM... echo $summoner->name; // I am TheKronnY echo $summoner->summonerLevel; // 69 print_r($summoner->getData()); // Or array of all the data /* Array * ( * [id] => KnNZNuEVZ5rZry3IyWwYSVuikRe0y3qTWSkr1wxcmV5CLJ8 * [accountId] => tGSPHbasiCOgRM_MuovMKfXw7oh6pfXmGiPDnXcxJDohrQ * [puuid] => rNmb6Rq8CQUqOHzMsFihMCUy4Pd201vDaRW9djAoJ9se7myXrDprvng9neCanq7yGNmz7B3Wri4Elw * [name] => I am TheKronnY * [profileIconId] => 3180 * [revisionDate] => 1543438015000 * [summonerLevel] => 69 * ) */
..或如何获取静态英雄数据
// ...initialization... // this fetches the champion data and returns StaticChampionDto object $champion = $api->getStaticChampion(61); echo $champion->name; // Orianna echo $champion->title; // the Lady of Clockwork print_r($champion->getData()); // Or array of all the data /* Array * ( * [id] => 61 * [name] => "Orianna" * [key] => "Orianna" * [title] => "the Lady of Clockwork" * ) */
更多LeagueAPI的使用示例可以在此处找到。
缓存提供者
缓存提供者负责在库的实例中保持速率限制、调用缓存和静态数据,以便于重用。当使用上述任何功能时,此功能将自动启用。
使用此功能时,可以将LeagueAPI::SET_CACHE_PROVIDER
设置为任何兼容PSR-6标准的类,例如实现Psr\Cache\CacheItemPoolInterface
接口的类。通过使用LeagueAPI::SET_CACHE_PROVIDER_PARAMS
或LeagueAPI::SET_DD_CACHE_PROVIDER_PARAMS
选项,您可以将任何数据传递给缓存提供者类。
有关缓存提供者的更多信息,请参阅维基页面。
速率限制
此智能功能可以轻松防止超过每个键的调用限制和方法限制。要启用此功能,您必须将LeagueAPI::SET_CACHE_RATELIMIT
设置为true
。其他一切都是完全自动的,因此您只需启用此功能。
有关速率限制的更多信息,请参阅维基页面。
调用缓存
此功能可以通过暂时保存从API获取的数据并将其用作结果数据来防止在短时间内对API进行不必要的调用。要启用此功能,您必须将LeagueAPI::SET_CACHE_CALLS
设置为true
。您还应提供LeagueAPI::SET_CACHE_CALLS_LENGTH
选项来指定缓存数据的生存期,否则将使用默认时间间隔60秒
。
有关API调用缓存的更多信息,请参阅维基页面。
异步请求
此功能允许通过Guzzle进行请求分组和异步发送。请求发送并接收到响应后,将调用用户提供的回调函数。
有关异步请求的更多信息,请参阅维基页面。
StaticData 端点
这些端点为您提供了将静态数据转换为对象实例的简单方法,并轻松与之交互。它们也在许多DataDragonAPI函数(显示图片)中得到支持。
有关静态数据端点的更多信息,请参阅维基页面。
StaticData 链接
此功能允许您自动链接与请求相关的静态数据,所有数据都通过DataDragonAPI
管理。所有静态数据都将本地缓存,这使得在初始请求之后此操作非常快。此外,通过DataDragonAPI
发出的任何请求都不计入您的速率限制。
有关静态数据链接的更多信息,请参阅维基页面。
扩展
使用扩展功能对于ApiObject
来说是非常有用的工具,它允许你在ApiObject
中实现自己的方法和逻辑。通过在初始化库时使用设置选项LeagueAPI::SET_EXTENSIONS
来启用扩展。
有关API对象扩展的更多信息,请参阅维基页面。
回调函数
允许你在实际API请求发送前后提供自定义函数。
在回调函数中,有取消即将到来请求的能力 - 当任何回调函数返回false
时,会抛出异常Exceptions\RequestException
,并取消请求。
有关回调函数的更多信息,请参阅维基页面。
CLI 支持
你还可以在命令行环境中使用这个库。
root@localhost:~/riot-api/src/LeagueAPICLI# leagueapicli summoner:get-by-name "I am TheKronnY" --pretty --config ~/config.json { "id": "Y0ac04pquunxrtvEtxWsG8hX0EBYSFfVuuL6JsR5AaWOoLo", "accountId": "UIctwb-75CS_vCHe494r-cDO9zlvGzu4JVdWIb_ox7xqmg", "puuid": "XYPInPFGOn1mqOmkzZEtf9jzNCUTK5KviHWxNfNnmWZ_4EovMV-q02qY5rXtRGWl1Nb_oK-2D1m4Bg", "name": "I am TheKronnY", "profileIconId": 540, "revisionDate": 1566761498000, "summonerLevel": 111 }
有关CLI支持的更多信息,请参阅维基页面。更多LeagueAPICLI的使用示例可以在这里找到。
DataDragon API
处理静态图像有多容易?例如,获取奥莉安娜的加载屏幕艺术效果?
源代码:
echo DataDragonAPI::getChampionLoading('Orianna'); echo DataDragonAPI::getChampionLoading('Orianna', 7);
输出:
<img alt="Orianna" class="dd-icon dd-loading" src="http://ddragon.leagueoflegends.com/cdn/img/champion/loading/Orianna_0.jpg"> <img alt="Orianna" class="dd-icon dd-loading" src="http://ddragon.leagueoflegends.com/cdn/img/champion/loading/Orianna_7.jpg">
渲染:
...有些怀旧的感觉?
源代码:
DataDragonAPI::iniByVersion('0.151.2'); echo DataDragonAPI::getItemIcon(3132); echo DataDragonAPI::getItemIcon(3126); echo DataDragonAPI::getItemIcon(3138);
输出:
<img alt="3132" class="dd-icon dd-item" src="http://ddragon.leagueoflegends.com/cdn/0.151.2/img/item/3132.png"> <img alt="3126" class="dd-icon dd-item" src="http://ddragon.leagueoflegends.com/cdn/0.151.2/img/item/3126.png"> <img alt="3138" class="dd-icon dd-item" src="http://ddragon.leagueoflegends.com/cdn/0.151.2/img/item/3138.png">
渲染:
...或者根据API对象显示英雄及其技能的图标?
源代码:
// ... $orianna = $api->getStaticChampion(61, true); echo DataDragonAPI::getChampionSplashO($orianna); foreach($orianna->spells as $spell) echo DataDragonAPI::getChampionSpellIconO($spell);
输出:
<img alt="Orianna" class="dd-icon dd-icon-champ" src="https://ddragon.leagueoflegends.com/cdn/8.24.1/img/champion/Orianna.png"> <img alt="OrianaIzunaCommand" class="dd-icon dd-spell" src="http://ddragon.leagueoflegends.com/cdn/8.24.1/img/spell/OrianaIzunaCommand.png"> <img alt="OrianaDissonanceCommand" class="dd-icon dd-spell" src="http://ddragon.leagueoflegends.com/cdn/8.24.1/img/spell/OrianaDissonanceCommand.png"> <img alt="OrianaRedactCommand" class="dd-icon dd-spell" src="http://ddragon.leagueoflegends.com/cdn/8.24.1/img/spell/OrianaRedactCommand.png"> <img alt="OrianaDetonateCommand" class="dd-icon dd-spell" src="http://ddragon.leagueoflegends.com/cdn/8.24.1/img/spell/OrianaDetonateCommand.png">
渲染: