Public API Reference#

Main Entrypoint#

Infocyph\Draw\Draw

<?php
use Infocyph\Draw\Draw;

$draw = new Draw();
$result = $draw->execute($request);

Methods:

  • execute(array<string,mixed> $request): array<string,mixed>

  • requestFingerprint(array<string,mixed> $request): string

Random Interfaces and Implementations#

Infocyph\Draw\Contracts\RandomGeneratorInterface

  • float(): float

  • int(int $min, int $max): int

  • pickArrayKey(array $items): int|string

  • seedFingerprint(): ?string

Built-ins:

  • Infocyph\Draw\Random\SecureRandomGenerator

  • Infocyph\Draw\Random\SeededRandomGenerator

Campaign State (PSR-6)#

Campaign flows accept any Psr\Cache\CacheItemPoolInterface via options.cachePool.

Built-ins in this package:

  • Infocyph\Draw\State\MemoryCachePool

  • Infocyph\Draw\State\MemoryCacheItem

Rules#

Infocyph\Draw\Rules\RuleSet

Constructor arguments:

  • perUserCap (int, default 1)

  • perItemCap (array<string,int>, default [])

  • groupQuota (array<string,int>, default [])

  • cooldownSeconds (int, default 0)

Factory helpers:

  • RuleSet::fromArray(array<string,mixed> $rules): RuleSet

  • RuleSet::toArray(): array<string, int|array<string,int>>

Audit#

Infocyph\Draw\Audit\AuditTrail

  • create(array $configuration, array $result, ?string $seedFingerprint = null, string $secret = ‘’): array

  • verify(array $audit, array $configuration, array $result, ?string $seedFingerprint = null, string $secret = ‘’): bool

  • fingerprint(array $payload): string

Exceptions#

Common exception types:

  • Infocyph\Draw\Exceptions\ValidationException

  • Infocyph\Draw\Exceptions\EmptyPoolException

  • Infocyph\Draw\Exceptions\DrawExhaustedException

  • Infocyph\Draw\Exceptions\DrawException