kelioDev / glicko2
PHP 实现的 Glicko2 评级系统
1.0.2
2019-12-05 02:44 UTC
Requires
- php: >=7.1.0
Requires (Dev)
- phpunit/phpunit: ~5.3.0
This package is not auto-updated.
Last update: 2024-09-20 21:55:55 UTC
README
--------------------------------------------------------------------------------------------------------------
这是对 Match 类进行重命名以 MatchGame 的分支,因为在 PHP 8.0 中 "match" 是一个保留关键字
--------------------------------------------------------------------------------------------------------------
PHP 实现的 Glicko2 评级系统
安装
Composer
通过 Composer 安装此扩展是首选方式。
运行以下命令之一
php composer.phar require KelioDev/glicko2 "~1.0.0"
或
"KelioDev/glicko2": "~1.0.0"
将以下内容添加到您的 composer.json
的 require 部分中
使用方法
为了便于理解,以 ActiveRecord 模式为例。
在某个地方创建对象。属性名称可以是任意的
use keliodev\glicko2\Player; // ... public function createUserRating(int $userId) { $userRating = new UserRating(); $userRating->user_id = $userId; $player = new Player(); $userRating->rating = $player->getRating(); $userRating->rating_deviation = $player->getRatingDeviation(); $userRating->rating_volatility = $player->getRatingVolatility(); $userRating->insert(); return $userRating; }
好,让我们开始吧
use keliodev\glicko2\MatchGame; use keliodev\glicko2\MatchCollection; use keliodev\glicko2\Player; $player1 = new Player($userRating1->rating, $userRating1->rating_deviation, $userRating1->rating_volatility); $player2 = new Player($userRating2->rating, $userRating2->rating_deviation, $userRating2->rating_volatility); // match chain $match1 = new MatchGame($player1, $player2, 1, 0); $match1->calculate(); $match2 = new MatchGame($player1, $player2, 3, 2); $match2->calculate(); // or match collection $matchCollection = new MatchCollection(); $matchCollection->addMatch(new MatchGame($player1, $player2, 1, 0)); $matchCollection->addMatch(new MatchGame($player1, $player2, 3, 2)); $matchCollection->calculate(); $newPlayer1Rating = $player1->getRating(); $newPlayer2Rating = $player2->getRating(); // for example, save in DB $userRating1->rating = $player1->getRating(); $userRating1->rating_deviation = $player1->getRatingDeviation(); $userRating1->rating_volatility = $player1->getRatingVolatility(); $userRating1->update(); // similarly save the second player