PHPackages                             mike-reinders/runeterra-php - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. mike-reinders/runeterra-php

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

mike-reinders/runeterra-php
===========================

Legends of Runeterra DeckCode Encoder/Decoder for PHP

1.1(5y ago)101515[1 PRs](https://github.com/mike-reinders/runeterra-php/pulls)MITPHPPHP ^7.2

Since Oct 22Pushed 3y ago2 watchersCompare

[ Source](https://github.com/mike-reinders/runeterra-php)[ Packagist](https://packagist.org/packages/mike-reinders/runeterra-php)[ Docs](https://github.com/mike-reinders/runeterra-php)[ RSS](/packages/mike-reinders-runeterra-php/feed)WikiDiscussions master Synced today

READMEChangelog (6)Dependencies (2)Versions (7)Used By (0)

RuneterraPHP
============

[](#runeterraphp)

A PHP library based on [**SwitchbladeBot/runeterra**](https://github.com/SwitchbladeBot/runeterra) developed for
decoding deckcodes and encoding decks for [**Legends of Runeterra**](http://playruneterra.com).

[![Build Status](https://camo.githubusercontent.com/81a7483f8dc2843c29a7c3e5854112bb5693126c38f21102af5e678d53d9ef12/68747470733a2f2f7365637572652e7472617669732d63692e6f72672f6d696b652d7265696e646572732f72756e6574657272612d7068702e706e67)](https://travis-ci.org/mike-reinders/runeterra-php) [![Latest Stable Version](https://camo.githubusercontent.com/eb8ce26d39d85796d889268da506be21ccc5e100bc51d5f297fe341d184b250e/68747470733a2f2f706f7365722e707567782e6f72672f6d696b652d7265696e646572732f72756e6574657272612d7068702f76)](https://packagist.org/packages/mike-reinders/runeterra-php) [![Total Downloads](https://camo.githubusercontent.com/04d28ff7f2d728b2e8b53276522b443661f23f27adc45675ca625a328eab84b6/68747470733a2f2f706f7365722e707567782e6f72672f6d696b652d7265696e646572732f72756e6574657272612d7068702f646f776e6c6f616473)](https://packagist.org/packages/mike-reinders/runeterra-php) [![Latest Unstable Version](https://camo.githubusercontent.com/8fadb699c8b194dccc39a56fe85f14e265940d6d8a4f30b01821b6e822116955/68747470733a2f2f706f7365722e707567782e6f72672f6d696b652d7265696e646572732f72756e6574657272612d7068702f762f756e737461626c65)](https://packagist.org/packages/mike-reinders/runeterra-php) [![License](https://camo.githubusercontent.com/3d3f028050c71f7f222c5642ab97ba6aac0745b8eb58c63c27c407923d6057ab/68747470733a2f2f706f7365722e707567782e6f72672f6d696b652d7265696e646572732f72756e6574657272612d7068702f6c6963656e7365)](https://packagist.org/packages/mike-reinders/runeterra-php)

Install
-------

[](#install)

```
composer require mike-reinders/runeterra-php

```

[Visit Packagist.org **mike-reinders/runeterra-php**](https://packagist.org/packages/mike-reinders/runeterra-php)
[Download **Composer PHP Dependency Manager**](https://getcomposer.org/download/)

Guideline
---------

[](#guideline)

### raw deck

[](#raw-deck)

```
// DeckEncoding
$raw_deck = DeckEncoding::decode("CEBAIAICAMGRWMIHAECQOCQVC4RC6MICAEAQKKQBAEBASAQBAECQ6AQBAIDSA");
$deck_code = DeckEncoding::encode($raw_deck);

// or DeckEncodingFactory
$raw_deck = DeckEncodingFactory::toRawDeck("CEBAIAICAMGRWMIHAECQOCQVC4RC6MICAEAQKKQBAEBASAQBAECQ6AQBAIDSA");
$deck_code = DeckEncodingFactory::fromRawDeck($raw_deck);
```

##### return format

[](#return-format)

```
$raw_deck = [
  [
    0 => 1,  // set
    1 => 2,  // faction id
    2 => 3,  // card number
    3 => 3   // card count
  ],
  ...
];
```

### card code deck

[](#card-code-deck)

```
// DeckEncodingFactory
$card_code_deck = DeckEncodingFactory::toCardCodeDeck("CEBAIAICAMGRWMIHAECQOCQVC4RC6MICAEAQKKQBAEBASAQBAECQ6AQBAIDSA");
$deck_code = DeckEncodingFactory::fromCardCodeDeck($card_code_deck);
```

##### return format

[](#return-format-1)

```
$card_code_deck = [
  "01IO003" => 3, // card code => count
  "01IO013" => 3,
  "01SI049" => 3,
  "01SI042" => 2,
  "01IO009" => 2,
  "01SI015" => 1,
  ...
];
```

### card deck

[](#card-deck)

```
// DeckEncodingFactory
$card_deck = DeckEncodingFactory::toCardDeck("CEBAIAICAMGRWMIHAECQOCQVC4RC6MICAEAQKKQBAEBASAQBAECQ6AQBAIDSA", Card::class);
$deck_code = DeckEncodingFactory::fromCardDeck($card_deck);
```

##### return format

[](#return-format-2)

```
$card_deck = [
  Card {
    #set: 1
    #faction_id: 2
    #number: 3
    #count: 3
  },
  Card {
    #set: 1
    #faction_id: 2
    #number: 13
    #count: 3
  },
  Card {
    #set: 1
    #faction_id: 2
    #number: 27
    #count: 3
  },
  Card {
    #set: 1
    #faction_id: 2
    #number: 49
    #count: 3
  }
  ...
];
```

Library Tests
-------------

[](#library-tests)

### PHP-CLI

[](#php-cli)

```
composer install --dev
./vendor/bin/phpunit --bootstrap vendor/autoload.php --testdox tests
```

### Docker

[](#docker)

##### Download &amp; Install

[](#download--install)

- Docker Desktop CE for [Windows](https://hub.docker.com/editions/community/docker-ce-desktop-windows) or [Mac](https://hub.docker.com/editions/community/docker-ce-desktop-mac/)
- Docker Engine CE for [Ubuntu](https://hub.docker.com/editions/community/docker-ce-server-ubuntu), [Debian](https://hub.docker.com/editions/community/docker-ce-server-debian) or [install manually](https://docs.docker.com/engine/install/)

##### Build Image

[](#build-image)

```
docker build --no-cache -t runeterra-php:latest ./docker
```

##### Test it!

[](#test-it)

```
# simply run
docker run --name=runeterra-php --rm -it runeterra-php test

# watch: Linux Shell
docker run --name=runeterra-php --rm --volume "/${PWD}:/repository:rw" -it runeterra-php test watch

# watch: Windows Powershell
docker run --name=runeterra-php --rm --volume "${PWD}:/repository:rw" -it runeterra-php test watch

# watch: Windows Command Prompt (CMD)
docker run --name=runeterra-php --rm --volume "%CD%:/repository:rw" -it runeterra-php test watch
```

###  Health Score

30

—

LowBetter than 64% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity19

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity57

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 97.5% 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 ~99 days

Recently: every ~124 days

Total

6

Last Release

1894d ago

Major Versions

0.0.4 → 1.0-beta2021-03-03

### Community

Maintainers

![](https://www.gravatar.com/avatar/db1a7380fc210f86ef6649f97875eb22138392240418d86f7542c0f0398163ca?d=identicon)[MikeReinders](/maintainers/MikeReinders)

---

Top Contributors

[![mike-reinders](https://avatars.githubusercontent.com/u/34357321?v=4)](https://github.com/mike-reinders "mike-reinders (39 commits)")[![yuridte](https://avatars.githubusercontent.com/u/8240614?v=4)](https://github.com/yuridte "yuridte (1 commits)")

---

Tags

phpencoderdecoderlegendsruneterradeckcode

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/mike-reinders-runeterra-php/health.svg)

```
[![Health](https://phpackages.com/badges/mike-reinders-runeterra-php/health.svg)](https://phpackages.com/packages/mike-reinders-runeterra-php)
```

###  Alternatives

[dflydev/base32-crockford

Encode/decode numbers using Douglas Crockford's Base32 Encoding

14379.1k1](/packages/dflydev-base32-crockford)[base62/base62

base62 encoder and decoder also for big numbers with Laravel integration

169.5k](/packages/base62-base62)

PHPackages © 2026

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