Tournament Generator

Round extends HierarchyBase
in package
implements WithSkipSetters, WithTeams, WithGroups, WithGames Uses WithTeams, WithGroups, WithSkipSetters, WithGames

Tournament round

Round is a container for tournament groups. Groups in a round are played at the same time. This modifies the generation of games - generate all games for each group and play them in alternating order (game 1 from group 1, game 1 from group 2, game 2 from group 1, ...).

Tags
author

Tomáš Vojík vojik@wboy.cz

since
0.1

Interfaces, Classes and Traits

WithSkipSetters
Interface that allows for setting skipping of not-playable games
WithTeams
Functions for objects that contain teams
WithGroups
Interface for objects that contain groups
WithGames
Interface for objects that contain games

Table of Contents

$container  : HierarchyContainer
$games  : GameContainer
$id  : string|int
$name  : string
$teams  : TeamContainer
$allowSkip  : bool
__construct()  : mixed
Round constructor.
__toString()  : string
addGameContainer()  : WithGames
Add a child container for games
addGroup()  : $this
Adds one or more group to round
addTeam()  : WithTeams
Add one or more teams into the object.
addTeamContainer()  : WithTeams
Add a child container for games
allowSkip()  : $this
Allows round skipping
disallowSkip()  : $this
Disallow round skipping
export()  : ExporterInterface
Prepares a general hierarchy exporter for this hierarchy class
filterTeams()  : array<string|int, mixed>
Filter teams using the specified filters
genGames()  : array<string|int, mixed>
Generate all games
getContainer()  : HierarchyContainer
Get the hierarchy container
getGameContainer()  : GameContainer
Get the container for games
getGames()  : array<string|int, Game>
Get all tournament games
getGroups()  : array<string|int, Group>
Get all groups in this object
getGroupsIds()  : array<string|int, string>|array<string|int, int>
Get all group ids
getId()  : string|int
Gets the unique identifier of the object
getName()  : string
Gets the name of the object
getSkip()  : bool
Getter for round skipping
getTeamContainer()  : TeamContainer
Get the container for games
getTeams()  : array<string|int, Team>
Get all teams in the object
group()  : Group
Creates a new group and adds it to round
insertIntoContainer()  : $this
Insert into hierarchical container
isPlayed()  : bool
Check if all games in this round has been played
orderGroups()  : array<string|int, Group>
Sort groups by their order
progress()  : $this
Progresses all teams from the round
queryGroups()  : ContainerQuery
Get groups container query
resetGames()  : $this
Reset all game results as if they were not played
setGameAutoincrementId()  : WithGames
Sets a new autoincrement value (start) for the generated games
setId()  : self
Sets the unique identifier of the object
setName()  : self
Sets the name of the object
setResults()  : Game|null
Set the game's results
setSkip()  : $this
Set round skipping
simulate()  : $this
Simulate all games in this round as they would be played for real
sortTeams()  : array<string|int, Team>
Sort the teams by their score/points
splitTeams()  : $this
Split teams into its Groups
team()  : Team
Create a new team and add it into the object

Properties

$id

protected string|int $id

$name

protected string $name = ''

Methods

__construct()

Round constructor.

public __construct([string $name = '' ][, string|int|null $id = null ]) : mixed
Parameters
$name : string = ''

Round name

$id : string|int|null = null

Round id - if omitted -> it is generated automatically as unique string

Return values
mixed —

__toString()

public __toString() : string
Return values
string —

Name of the object

addGroup()

Adds one or more group to round

public addGroup(Group ...$groups) : $this
Parameters
$groups : Group
Return values
$this —

allowSkip()

Allows round skipping

public allowSkip() : $this
Return values
$this —

disallowSkip()

Disallow round skipping

public disallowSkip() : $this
Return values
$this —

filterTeams()

Filter teams using the specified filters

public filterTeams(array<string|int, mixed> &$teams, array<string|int, TeamFilter>|array<string|int, array<string|int, TeamFilter>> $filters) : array<string|int, mixed>
Parameters
$teams : array<string|int, mixed>

Teams to filter through

$filters : array<string|int, TeamFilter>|array<string|int, array<string|int, TeamFilter>>

Filters to use

Tags
throws
Exception
Return values
array<string|int, mixed> —

genGames()

Generate all games

public genGames() : array<string|int, mixed>
Tags
throws
Exception
Return values
array<string|int, mixed> —

getGames()

Get all tournament games

public getGames() : array<string|int, Game>
Return values
array<string|int, Game> —

getGroups()

Get all groups in this object

public getGroups() : array<string|int, Group>
Return values
array<string|int, Group> —

getGroupsIds()

Get all group ids

public getGroupsIds() : array<string|int, string>|array<string|int, int>
Return values
array<string|int, string>|array<string|int, int> —

Array of ids

getId()

Gets the unique identifier of the object

public getId() : string|int
Return values
string|int —

Unique identifier of the object

getName()

Gets the name of the object

public getName() : string
Return values
string —

Name of the object

getSkip()

Getter for round skipping

public getSkip() : bool
Return values
bool —

getTeams()

Get all teams in the object

public getTeams([bool $ordered = false ][, string|null $ordering = Constants::POINTS ][, array<string|int, TeamFilter>|array<string|int, array<string|int, TeamFilter>> $filters = [] ]) : array<string|int, Team>
Parameters
$ordered : bool = false

If true - order the teams by their score/points

$ordering : string|null = Constants::POINTS

What to order the teams by - Constants::POINTS, Constants::SCORE

$filters : array<string|int, TeamFilter>|array<string|int, array<string|int, TeamFilter>> = []

Filters to filter the returned teams (ex. if you only want to get the first 3 teams)

Tags
throws
Exception
Return values
array<string|int, Team> —

group()

Creates a new group and adds it to round

public group(string $name[, string|int|null $id = null ]) : Group
Parameters
$name : string

Group name

$id : string|int|null = null

Group id - if omitted -> it is generated automatically as unique string

Return values
Group —

New group

insertIntoContainer()

Insert into hierarchical container

public insertIntoContainer(Base $object) : $this
Parameters
$object : Base
Tags
post

Object is added to hierarchy

post

If the object has teams -> add other team container to hierarchy

post

If the object has games -> add other game container to hierarchy

throws
Exception
Return values
$this —

isPlayed()

Check if all games in this round has been played

public isPlayed() : bool
Return values
bool —

orderGroups()

Sort groups by their order

public orderGroups() : array<string|int, Group>
Return values
array<string|int, Group> —

Sorted groups

progress()

Progresses all teams from the round

public progress([bool $blank = false ]) : $this
Parameters
$blank : bool = false

If true -> creates dummy teams for (does not progress the real team objects) - used for simulation

Tags
throws
Exception
Return values
$this —

resetGames()

Reset all game results as if they were not played

public resetGames() : $this
Tags
post

All games in this round are marked as "not played"

post

All scores in this round are deleted

throws
Exception
Return values
$this —

setGameAutoincrementId()

Sets a new autoincrement value (start) for the generated games

public setGameAutoincrementId(int $id) : WithGames
Parameters
$id : int

Id - probably from the database

Tags
warning

Do this on the top-level hierarchy element (Tournament class) or else, it might be reset later

post

Propagates the value to all child hierarchy objects

see
GameContainer::setAutoIncrement()
since
0.5
Return values
WithGames —

setId()

Sets the unique identifier of the object

public setId(string|int $id) : self
Parameters
$id : string|int

Unique identifier of the object

Tags
throws
InvalidArgumentException

if the provided argument is not of type 'string' or 'int'

Return values
self —

setName()

Sets the name of the object

public setName(string $name) : self
Parameters
$name : string

Name of the object

Return values
self —

setResults()

Set the game's results

public setResults(array<string|int, int> $results) : Game|null

Results is an array of [teamId => teamScore] key-value pairs. This method will look for a game with given teams and try to set the first not played.

Parameters
$results : array<string|int, int>

array of [teamId => teamScore] key-value pairs

Tags
throws
Exception
Return values
Game|null —

setSkip()

Set round skipping

public setSkip(bool $skip) : $this
Parameters
$skip : bool
Return values
$this —

simulate()

Simulate all games in this round as they would be played for real

public simulate() : $this
Tags
throws
Exception
Return values
$this —

sortTeams()

Sort the teams by their score/points

public sortTeams([string|null $ordering = Constants::POINTS ][, array<string|int, TeamFilter>|array<string|int, array<string|int, TeamFilter>> $filters = [] ]) : array<string|int, Team>
Parameters
$ordering : string|null = Constants::POINTS

What to order the teams by - Constants::POINTS, Constants::SCORE

$filters : array<string|int, TeamFilter>|array<string|int, array<string|int, TeamFilter>> = []

Filters to filter the returned teams (ex. if you only want to get the first 3 teams)

Tags
throws
Exception
Return values
array<string|int, Team> —

splitTeams()

Split teams into its Groups

public splitTeams(array<string|int, Group> ...$groups) : $this
Parameters
$groups : array<string|int, Group>
Tags
throws
Exception
noinspection

CallableParameterUseCaseInTypeContextInspection

Return values
$this —

team()

Create a new team and add it into the object

public team([string $name = '' ][, string|int|null $id = null ]) : Team
Parameters
$name : string = ''

Name of the new team

$id : string|int|null = null

Id of the new team - if omitted -> it is generated automatically as unique string

Return values
Team —

Newly created team

Search results