tackacoder / tournament-services
生成具有队伍和日程安排的不同锦标赛。
v1.2.2
2023-06-15 11:59 UTC
Requires
- php: >=8.1
- nesbot/carbon: ^2.66
- symfony/property-access: ^6.2
- symfony/serializer: ^6.2
- symfony/yaml: ^6.2
Requires (Dev)
- pestphp/pest: ^2.6
- phpstan/phpstan: ^1.10
- rector/rector: ^0.16.0
- symfony/var-dumper: ^6.2
README
功能
- 创建一个简单的循环赛制锦标赛,具有偶数队伍和主客场比赛。
安装
$ composer require tackacoder/tournament-services
基本用法
require './vendor/autoload.php'; use Carbon\CarbonImmutable; use Tackacoder\Tournament\Tournament; /** * Create a tournament * * ` Tournament * - Tournament name * - Tournament Mode * - Tournament generate date * * ` Teams * - List of teams * * ` Matches * - Day name * * ` Schedules * - Schedule Date * * ` Matches * - Home Team * - Away Team * - Score * - Stats * * TOURNAMENT_MODE is a service variable * By default, services are included : * - championship * - cup */ $TOURNAMENT_MODE = 'championship'; $tournament = new Tournament('My tournament title', $TOURNAMENT_MODE); // OR $tournament = new Tournament(); $tournament->setName('My tournament title')->setMode($TOURNAMENT_MODE); // Complete with teams $tournament->setTeams([ [ "name" => "Team One", "status" => true ], [ "name" => "Team Two", "status" => false ], [ "name" => "Team Three", "status" => true ], [ "name" => "Team Four", "status" => true ] ]); // Change the start date $tournament->setDate(date: CarbonImmutable::now('UTC')); $tournament->addService(new ChampionshipService()); $result = $tournament->generate();
冠军服务用法
冠军服务对象可以使用可选参数构建
- interval: 请参阅 文档
- callable: 闭包,用于将事件发送到不同的端点
new ChampionshipService('2 days', function ($args) { $endpoint = $args['name']; event(new Event($args)); });
在生成方法中,您可以添加一些配置参数以发送到服务。对于 ChampionshipService
,您可以添加镜像和偏移配置。
[...] $tournament->generate([ 'mirror' => false, // false => each Teams meet once, true => home & away matches 'shift' => 3 // Shift as many matches to avoid meeting teams on the same model ]);
generate()
方法的默认配置参数包括:* 锦标赛名称 * 创建日期 * 队伍集合
创建生成服务
use Tackacoder\Tournament\Services\Service; use Tackacoder\Tournament\Supports\ServiceInterface; class MyServiceService extends Service implements ServiceInterface { /** * NEEDED to find the generator */ protected string $name = 'my_service'; public function generate(array $config): array { $this->setConfig($config); $date = $this->getConfig('date'); $teams = $this->getConfig('teams'); $name = $this->getConfig('name'); return []; } } // In other file $tournament = new Tournament(); $tournament->setMode('my_service');
贡献
运行功能测试
$ composer test
或 $ php vendor/bin/pest