英雄补丁说明 / sdk
《风暴英雄》的PHP SDK
Requires
- php: ^7.3 || ^8.0
- heroestoolchest/heroes-data: dev-master
Requires (Dev)
- phpstan/phpstan: ^0.12
- phpunit/phpunit: ^9.0
This package is auto-updated.
Last update: 2024-09-18 01:03:22 UTC
README
《风暴英雄》的PHP SDK
安装
- 将
heroes-data
仓库添加到您的 composer.json 中,例如:
"repositories": [
{
"type": "vcs",
"url": "https://github.com/heroespatchnotes/heroes-data"
}
],
- 使用Composer安装:
> composer require heroespatchnotes/sdk
描述
Heroes
是一个用PHP编写的SDK,用于方便访问暴雪MOBA游戏《风暴英雄》的社区资源。
游戏数据
游戏数据由 koliva8245 提取和维护,并在 heroes-data 的 Heroes Tool Chest 下发布。SDK提供了在不同级别上方便地发现和封装原始JSON文件的便利:提供者和实体。
提供者
提供者
定位并加载JSON编码的数据到便利的共享实例中。你可以将 提供者
视为游戏数据的“数据库连接”。因为它们将整个文件加载到内存中,所以 提供者
只能通过其静态的 get()
方法实例化,以确保只有一个共享实例。 提供者
是文件和补丁特定的,有两种类型。可以通过其JSON键或使用 getContent()
方法以整体方式访问 提供者
的内容。
DataProvider
DataProvider
从补丁的 data 子目录访问游戏数据。每个 DataProvider
需要一个与数据文件对应的 $group
,以及一个用于使用的数据版本的 $patch
。
注意:省略
$patch
将默认为最新版本。你可以通过其getPatch()
方法检查提供者
的补丁。
可用的组在 DataProvider
类上定义为类常量
const ANNOUNCER = 'announcer';
const BANNER = 'banner';
const BEHAVIORVETERANCY = 'behaviorveterancy';
const EMOTICON = 'emoticon';
const EMOTICONPACK = 'emoticonpack';
const HERO = 'hero';
const HEROSKIN = 'heroskin';
const MATCHAWARD = 'matchaward';
const MOUNT = 'mount';
const PORTRAIT = 'portrait';
const PORTRAITPACK = 'portraitpack';
const REWARDPORTRAIT = 'rewardportrait';
const SPRAY = 'spray';
const UNIT = 'unit';
const VOICELINE = 'voiceline';
StringProvider
StringProvider
从补丁的 gamestrings 子目录访问游戏字符串。每个 StringProvider
需要一个与地区对应的 $group
,以及一个用于使用的数据版本的 $patch
。
注意:省略
$patch
将默认为最新版本。你可以通过其getPatch()
方法检查提供者
的补丁。
可用的组在 StringProvider
类上定义为类常量
const LOCALE = [
'Germany' => 'dede',
'USA' => 'enus',
'Spain' => 'eses',
'Mexico' => 'esmx',
'France' => 'frfr',
'Italy' => 'itit',
'Korea' => 'kokr',
'Poland' => 'plpl',
'Brazil' => 'ptbr',
'Russia' => 'ruru',
'China' => 'zhcn',
'Taiwan' => 'zhtw',
];
示例
// Hero data, latest patch
$heroes = DataProvider::get('hero');
echo $heroes->Abathur->life->amount; // "685.0"
// Skin data from a previous patch
$skins = DataProvider::get('heroskin', '2.48.4.77406');
var_dump($skins->DemonHunterWinter);
array(
"hyperlinkId": "WintersHelperValla",
"attributeId": "Dhu5",
"rarity": "Legendary",
"releaseDate": "2017-12-12",
"features": [
"ThemedAbilities",
"ThemedAnimations"
],
)
// English game strings, latest patch
$strings = StringProvider::get('enus');
echo $strings->gamestrings->unit->descriptino->Abathur; // "A unique Hero that can manipulate the battle from anywhere on the map."
// French game strings, previous patch
$older = StringProvider::get(StringProvider::FRANCE, '2.49.2.77981');
echo $older->gamestrings->abiltalent->$tassadarTalentId->name; // "Phase dimensionnelle"
//
实体
实体
建立在 提供者
之上,以简化对常用数据组件的访问。与 提供者
类似,实体
包括对底层JSON内容的访问,但它们还提供了针对许多端点的特定组件的方法。
实体
是通过相应的 Factory
创建的,该工厂是补丁和地区特定的
// Tassadar, pre-rework, in French
$heroes = new HeroFactory(StringProvider::LOCALE['France'], '2.49.2.77981');
$tassadar = $heroes->get('Tassadar');
foreach ($tassadar->abilities() as $ability)
{
echo $ability->name; // e.g. "Phase dimensionnelle"
}
注意:有关每个
实体
的详细信息,请参阅 API文档