renanvalente/elo-rating

There is no license information available for the latest version (dev-master) of this package.

A PHP implementation of Elo rating system

dev-master 2020-07-16 00:00 UTC

This package is not auto-updated.

Last update: 2024-10-05 17:58:02 UTC


README

A PHP class which implements the Elo rating system.

Install with composer

composer require renanvalente/elo-rating dev-master

Link to Packagist.org: https://packagist.org/packages/renanvalente/elo-rating

Usage

use 'RenanValente/Rating/Rating';
// require 'src/Rating/Rating.php';

// player A elo = 1000
// player B elo = 2000
// player A lost
// player B win
// kfactor default system 32

$rating = new Rating(1000, 2000, Rating::LOST);

$results = $rating->getNewRatings();

echo "New rating for player A: " . $results['a'] . "<br>";
echo "New rating for player B: " . $results['b'] . "<br>";

// player A elo = 1000
// player B elo = 2000
// player A draw
// player B draw
// kfactor default system 32

$rating = new Rating(1000, 2000);

$results = $rating->getNewRatings();

echo "New rating for player A: " . $results['a'] . "<br>";
echo "New rating for player B: " . $results['b'] . "<br>";

// player A elo = 1000
// player B elo = 2000
// player A win
// player B lost
// kfactor default system 32

$rating = new Rating(1000, 2000, Rating::WIN);

$results = $rating->getNewRatings();

echo "New rating for player A: " . $results['a'] . "<br>";
echo "New rating for player B: " . $results['b'] . "<br>";

// player A elo = 1500
// player B elo = 2000
// player A lost
// player B win
// kfactor config rules

$rating = new Rating(
    1500, // player A elo
    2000, // player B elo
    Rating::LOST, // player A lost
    [
        'default' => 32, // KFactor default
        'rules' => [  // Sample league scoring system 
            1000 => 25, // Bronze
            2000 => 16, // Silver
            3000 => 10, // Gold
            4500 => 5, // Diamond
        ]
    ]);

$results = $rating->getNewRatings();

echo "New rating for player A: " . $results['a'] . "<br>";
echo "New rating for player B: " . $results['b'] . "<br>";

// player A elo = 980
// players B elo = [2000, 1000, 1500, 2200]
// player A won all
// player B everyone lost
// kfactor config rules

$rating = new Rating(
    980, // player A elo
    [2000, 1000, 1500, 2200], // player B elo
    Rating::WIN, // player A won all
    [
        'default' => 32, // KFactor default
        'rules' => [  // Sample league scoring system 
            1000 => 25, // Bronze
            2000 => 16, // Silver
            3000 => 10, // Gold
            4500 => 5, // Diamond
        ]
    ]);

$results = $rating->getNewRatings();

echo "New rating for player A: " . $results['a'] . "<br>";
echo "New rating for player B: " . implode(' | ', $results['b']) . "<br>";

// player A elo = 1500
// players B elo = [2000, 1000, 1500, 2200]
// player A config rules
// player B config rules
// kfactor config rules

$rating = new Rating(
    1500, // player A elo
    [2000, 1000, 1500, 2200], // player B elo
    [Rating::WIN, Rating::LOST, Rating::DRAW, Rating::WIN], // player A won all
    [
        'default' => 32, // KFactor default
        'rules' => [  // Sample league scoring system 
            1000 => 25, // Bronze
            2000 => 16, // Silver
            3000 => 10, // Gold
            4500 => 5, // Diamond
        ]
    ]);

$results = $rating->getNewRatings();

echo "New rating for player A: " . $results['a'] . "<br>";
echo "New rating for player B: " . implode(' | ', $results['b']) . "<br>";

Credits

Developed by Renan Valente based on the development of Michal Chovanec.