1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
<?php
// SPDX-FileCopyrightText: 2021 Andrea Chirulescu <andrea.chirulescu@gmail.com>
// SPDX-FileCopyrightText: 2021 Harald Eilertsen <haraldei@anduin.net>
//
// SPDX-License-Identifier: AGPL-3.0-or-later
abstract class GeneratorBase
{
abstract public function get() : string;
function pick(array $arr) : string
{
return $arr[array_rand($arr)];
}
}
class BandNameGenerator extends GeneratorBase
{
private $prefixes = array(
"",
"a",
"the",
);
private $adverbs = array(
"bestial",
"dead",
"incongruent",
"ladylike",
"slimy",
"dandy",
"leftist",
"flamboyant",
);
private $verbs = array(
"kill",
"regurgitat",
"destroy",
"blasphem",
"strangl",
"terroriz",
"mutilat",
);
private $endings = array(
"er",
"ers",
"ing",
"ed",
);
public function get() : string
{
$parts = array(
$this->pick($this->prefixes),
$this->pick($this->adverbs),
$this->pick($this->verbs));
return trim(implode(" ", $parts) . $this->pick($this->endings));
}
}
class VenueGenerator extends GeneratorBase
{
private $prefix1 = array(
"",
"royal",
"shabby",
"happy",
"drunken",
);
private $prefix2 = array(
"",
"music",
"fiddler",
"rock",
"metal",
"mental",
);
private $type = array(
"hall",
"museum",
"asylum",
"stage",
"cottage",
"opera",
"lighthouse"
);
public function get() : string
{
$parts = array(
$this->pick($this->prefix1),
$this->pick($this->prefix2),
$this->pick($this->type));
return trim(implode(" ", $parts));
}
}
class LinkGenerator extends GeneratorBase
{
/**
* @return string
*/
public function get() : string
{
return 'https://example.com/' . bin2hex(random_bytes(8));
}
}
$band = new BandNameGenerator();
$venue = new VenueGenerator();
$link = new LinkGenerator();
$date = new DateTime();
for ($i = 0; $i < 10; $i++) {
$date->add(new DateInterval('P' . random_int(0, 60) . 'D'));
echo implode("\t", array($band->get(), $venue->get(), $date->format('Y-m-d'), $link->get(), $link->get())) . "\n";
}
|