1. Go to this page and download the library: Download dseguy/genie library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
dseguy / genie example snippets
use Dseguy\Generator\Letters;
use Dseguy\Generator\Digits;
foreach (Letters::lower()->merge(Digits::all()) as $value) {
// a, b, …, z, 0, 1, …, 9
}
foreach (Letters::upper() as $c) {
// A, B, C, …, Z
}
foreach (Booleans::withNull() as $b) {
// true, false, null
}
enum Suit { case Hearts; case Diamonds; case Clubs; case Spades; }
enum Priority: int { case Low = 1; case Medium = 2; case High = 3; }
foreach (Enums::cases(Suit::class) as $case) {
// Suit::Hearts, Suit::Diamonds, Suit::Clubs, Suit::Spades
}
foreach (Enums::names(Suit::class) as $name) {
// 'Hearts', 'Diamonds', 'Clubs', 'Spades'
}
foreach (Enums::values(Priority::class) as $value) {
// 1, 2, 3
}
// Test a validator against every (letter, digit) pair
public static function letterDigitPairs(): iterable
{
return Letters::lower()->product(Digits::all())
->map(fn($pair) => [$pair[0], $pair[1]]);
}
/** @dataProvider letterDigitPairs */
public function test_accepts_alphanumeric(string $letter, int $digit): void
{
$this->assertTrue(Validator::isAlphanumeric($letter . $digit));
}
// Test a function against all boolean/null combinations
public static function truthyInputs(): iterable
{
return Booleans::withNull()->map(fn($b) => [$b]);
}
// One user per letter of the alphabet
foreach (Letters::lower() as $initial) {
User::factory()->create(['username' => "user_{$initial}"]);
}
// All combinations of role × status for permission matrix tests
$roles = Collection::of(['admin', 'editor', 'viewer']);
$statuses = Collection::of(['active', 'suspended', 'pending']);
foreach ($roles->product($statuses) as [$role, $status]) {
// test every role × status combination
}
enum Status: string { case Active = 'active'; case Suspended = 'suspended'; case Pending = 'pending'; }
public static function allStatuses(): iterable
{
return Enums::cases(Status::class)->map(fn($s) => [$s]);
}
/** @dataProvider allStatuses */
public function test_notification_is_sent_for_every_status(Status $status): void
{
$this->assertTrue(Notifier::shouldNotify($status));
}
// Verify a mapping covers every backing value
foreach (Enums::values(Status::class) as $value) {
$this->assertArrayHasKey($value, StatusLabel::MAP);
}
// Check that all privileged ports are refused
$privileged = Digits::range(1, 1023)->filter(fn($p) => !in_array($p, $allowList));
foreach ($privileged as $port) {
$this->assertFalse($server->canBind($port));
}
// Verify all 5xx codes are handled
$serverErrors = Digits::range(500, 599);
foreach ($serverErrors as $code) {
$this->assertInstanceOf(ServerException::class, $handler->handle($code));
}
// Every character that must survive HTML encoding unchanged
$safe = Letters::all()->merge(Digits::all());
foreach ($safe as $char) {
$this->assertSame($char, htmlspecialchars($char));
}
// Detect which characters a legacy system rejects
$rejected = [];
foreach (Letters::all()->merge(Digits::all()) as $char) {
if (!$legacySystem->accepts($char)) {
$rejected[] = $char;
}
}
// All ORDER BY direction × LIMIT combinations
$directions = ['ASC', 'DESC'];
$limits = Digits::range(1, 5); // 1 … 5
foreach ($limits as $limit) {
foreach ($directions as $dir) {
$results = $db->query("SELECT * FROM items ORDER BY name $dir LIMIT $limit");
$this->assertCount($limit, $results);
}
}
$candidates = Letters::lower()->merge(Digits::all())->toIterator();
foreach ($candidates as $value) {
// a, b, …, z, 0, 1, …, 9
}
use Dseguy\Generator\Letters;
use Dseguy\Generator\Digits;
use Dseguy\Generator\Booleans;
use Dseguy\Generator\Permutations;
// All lowercase alphanumeric characters
$alphanumeric = Letters::lower()->merge(Digits::all());
// All uppercase letter + single digit pairs
$pairs = Letters::upper()->product(Digits::all());
foreach ($pairs as [$letter, $digit]) { … }
// All 3-letter lowercase trigrams (26^3 = 17 576 values)
$trigrams = Letters::lower()->repeat(3);
foreach ($trigrams as [$a, $b, $c]) { … }
// Even numbers from 1 to 50
$evens = Digits::range(1, 50)->filter(fn($n) => $n % 2 === 0);
// Letters mapped to their ASCII code
$ascii = Letters::all()->map(fn($c) => ord($c));
// All 2-char permutations over a-z, formatted as strings
$codes = Permutations::of(2, 'abcdefghijklmnopqrstuvwxyz')
->map(fn($s) => strtoupper($s));
use Dseguy\Generator\Letters;
use Dseguy\Generator\Digits;
use Dseguy\Generator\Booleans;
use Dseguy\Generator\Enums;
use Dseguy\Generator\Collection;
use Dseguy\Generator\FromCallable;
use Dseguy\Generator\Permutations;
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.