PHPackages                             heroespatchnotes/sdk - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. heroespatchnotes/sdk

ActiveLibrary[API Development](/categories/api)

heroespatchnotes/sdk
====================

PHP SDK for Heroes of the Storm

v0.9-beta.6(5y ago)23.2k[1 PRs](https://github.com/heroespatchnotes/sdk-php/pulls)MITPHPPHP ^7.3 || ^8.0

Since Dec 19Pushed 2y ago1 watchersCompare

[ Source](https://github.com/heroespatchnotes/sdk-php)[ Packagist](https://packagist.org/packages/heroespatchnotes/sdk)[ Docs](https://github.com/heroespatchnotes/sdk-php)[ RSS](/packages/heroespatchnotes-sdk/feed)WikiDiscussions develop Synced 3w ago

READMEChangelog (6)Dependencies (3)Versions (12)Used By (0)

Heroes SDK
==========

[](#heroes-sdk)

PHP SDK for Heroes of the Storm

[![](https://github.com/heroespatchnotes/sdk-php/workflows/PHPUnit/badge.svg)](https://github.com/heroespatchnotes/sdk-php/actions?query=workflow%3A%22PHPUnit)[![](https://github.com/heroespatchnotes/sdk-php/workflows/PHPStan/badge.svg)](https://github.com/heroespatchnotes/sdk-php/actions?query=workflow%3A%22PHPStan)[![Coverage Status](https://camo.githubusercontent.com/38aa24740d5f1c60bee49e015078b09ea014c468b929f2ef0a3e241951b004d0/68747470733a2f2f636f766572616c6c732e696f2f7265706f732f6769746875622f6865726f657370617463686e6f7465732f73646b2d7068702f62616467652e7376673f6272616e63683d646576656c6f70)](https://coveralls.io/github/heroespatchnotes/sdk-php?branch=develop)

Installation
------------

[](#installation)

1. Add the `heroes-data` repository to your **composer.json**, e.g.:

```
	"repositories": [
		{
			"type": "vcs",
			"url": "https://github.com/heroespatchnotes/heroes-data"
		}
	],

```

2. Install with Composer: `> composer require heroespatchnotes/sdk`

Description
-----------

[](#description)

`Heroes` is an SDK written in PHP to facilitate access to community resources for Blizzard's MOBA, **Heroes of the Storm**.

Game Data
---------

[](#game-data)

Game data is extracted and maintained by [koliva8245](https://github.com/koliva8245)and published under the **Heroes Tool Chest** at [heroes-data](https://github.com/HeroesToolChest/heroes-data). The SDK offers convenient discovery and class wrapping for the raw JSON files on two different levels: Providers and Entities.

### Providers

[](#providers)

`Providers` locate and load the JSON-encoded data into convenience shared instances. You can think of a `Provider` as the "database connection" for game data. Because they load into entire files into memory the `Provider` can only be instantiated through its static `get()` method to ensure a single, shared instance. `Providers` are file- and patch-specific and come in two flavors. `Provider` contents may be accessed by their JSON keys or in their entirety with the `getContent()` method.

#### DataProvider

[](#dataprovider)

A `DataProvider` accesses game data from the **data** subdirectories of a patch. Each `DataProvider` requires a `$group` corresponding to the data file, and a `$patch` for the version of data to use.

> Note: Omitting `$patch` will default to the latest available. You may always check a `Provider`'s patch by its `getPatch()` method.

Available groups are defined as class constants on the `DataProvider` class:

```
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)

A `StringProvider` accesses game strings from the **gamestrings** subdirectories of a patch. Each `StringProvider` requires a `$group` corresponding to the locale, and a `$patch` for the version of data to use.

> Note: Omitting `$patch` will default to the latest available. You may always check a `Provider`'s patch by its `getPatch()` method.

Available groups are defined as class constants on the `StringProvider` class:

```
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',
 ];

```

#### Examples

[](#examples)

```
// 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"
//

```

### Entities

[](#entities)

`Entities` build on `Providers` to simplify access to common data components. Like `Providers``Entities` include access to the underlying JSON content, but they also have component-specific methods for many endpoints.

`Entities` are created by using the corresponding `Factory`, which is patch- and locale- specific:

```
// 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"
}

```

> Note: See the [API docs](docs/API.md) for details on each `Entity`.

###  Health Score

28

—

LowBetter than 52% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity21

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity51

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 96.9% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~2 days

Total

6

Last Release

2008d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/5ebe908b4fe73807ecdd9f88733342199c9991b7de800329f5b2b787c8210d62?d=identicon)[MGatner](/maintainers/MGatner)

---

Top Contributors

[![MGatner](https://avatars.githubusercontent.com/u/17572847?v=4)](https://github.com/MGatner "MGatner (63 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (2 commits)")

---

Tags

phpsdkblizzardstormheroeshotsgamedata

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/heroespatchnotes-sdk/health.svg)

```
[![Health](https://phpackages.com/badges/heroespatchnotes-sdk/health.svg)](https://phpackages.com/packages/heroespatchnotes-sdk)
```

###  Alternatives

[deepseek-php/deepseek-php-client

deepseek PHP client is a robust and community-driven PHP client library for seamless integration with the Deepseek API, offering efficient access to advanced AI and data processing capabilities.

46688.8k5](/packages/deepseek-php-deepseek-php-client)[jstolpe/instagram-graph-api-php-sdk

Instagram Graph API PHP SDK

138110.7k2](/packages/jstolpe-instagram-graph-api-php-sdk)[octw/aramex

A Library to integrate with Aramex APIs

2927.7k](/packages/octw-aramex)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
