PHPackages                             chris-moreton/tournament-utils - 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. chris-moreton/tournament-utils

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

chris-moreton/tournament-utils
==============================

Utilities for managing tournaments, particularly engine v engine tournaments

v1.0.1(9y ago)0472MITPHPPHP &gt;=5.4.0

Since Oct 7Pushed 9y ago1 watchersCompare

[ Source](https://github.com/chris-moreton/tournament-utils)[ Packagist](https://packagist.org/packages/chris-moreton/tournament-utils)[ RSS](/packages/chris-moreton-tournament-utils/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (2)Versions (3)Used By (2)

tournament-utils
================

[](#tournament-utils)

Classes for determining pairings for tournaments.

Currently Round Robin is the only one I've written.

Getting started
---------------

[](#getting-started)

From the root of your application

```
composer require chris-moreton/tournament-utils

```

Unless using a framework where autoloading is already taken care of, you'll need to

```
include 'vendor/autoload.php';

/*
 * 5 players
 * ------------------------------------------------
 *          |   R1  |   R2  |   R3  |   R4  |  R5
 * ------------------------------------------------
 * Player 1 | 1 2 3 | 1 - 2 | 1 5 - | 1 4 5 | 1 3 4
 * Player 2 | - 5 4 | 5 4 3 | 4 3 2 | 3 2 - | 2 - 5
 */

$t = new Netsensia\Tournament\RoundRobin\Schedule(5);

// [player1, player2, round_number]

[2,5,1] == $t->getNextPairing();
[3,4,1] == $t->getNextPairing();
[1,5,2] == $t->getNextPairing();
[2,3,2] == $t->getNextPairing();
[1,4,3] == $t->getNextPairing();
[5,3,3] == $t->getNextPairing();
[1,3,4] == $t->getNextPairing();
[4,2,4] == $t->getNextPairing();
[1,2,5] == $t->getNextPairing();
[4,5,5] == $t->getNextPairing();

null == $t->getNextPairing();

```

###  Health Score

27

—

LowBetter than 49% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity8

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity59

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% 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 ~0 days

Total

2

Last Release

3502d ago

### Community

Maintainers

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

---

Top Contributors

[![chris-moreton](https://avatars.githubusercontent.com/u/1436601?v=4)](https://github.com/chris-moreton "chris-moreton (9 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/chris-moreton-tournament-utils/health.svg)

```
[![Health](https://phpackages.com/badges/chris-moreton-tournament-utils/health.svg)](https://phpackages.com/packages/chris-moreton-tournament-utils)
```

###  Alternatives

[smart-crowd/simple-sms-drivers

Addition providers for simple SMS laravel package

101.0k](/packages/smart-crowd-simple-sms-drivers)

PHPackages © 2026

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