Quickstart#
Create a Draw Instance#
<?php
use Infocyph\Draw\Draw;
$draw = new Draw();
Quick Lucky Example#
<?php
$result = $draw->execute([
'method' => 'lucky',
'items' => [
['item' => 'gift_a', 'chances' => 10, 'amountMode' => 'list', 'amounts' => [1, 2]],
['item' => 'gift_b', 'chances' => 20, 'amountMode' => 'weighted', 'amounts' => ['5' => 0.25, '10' => 0.75]],
],
'options' => ['count' => 2],
]);
Grand Winner Example#
<?php
$result = $draw->execute([
'method' => 'grand',
'items' => ['gift_a' => 2, 'gift_b' => 1],
'candidates' => ['u1', 'u2', 'u3', 'u4'],
]);
Campaign Example with PSR-6 Cache Pool#
<?php
use Infocyph\Draw\State\MemoryCachePool;
$result = $draw->execute([
'method' => 'campaign.run',
'items' => [
'gold' => ['count' => 1, 'weight' => 2, 'group' => 'premium'],
'silver' => ['count' => 2, 'weight' => 1, 'group' => 'basic'],
],
'candidates' => ['u1', 'u2', 'u3', 'u4'],
'options' => [
'cachePool' => new MemoryCachePool(),
'rules' => ['perUserCap' => 1],
'withExplain' => true,
'seed' => 12345,
],
]);
Read Result Meta#
<?php
if ($result['meta']['fulfilled'] === false) {
$reason = $result['meta']['partialReason'];
$missing = $result['meta']['unfilledCount'];
}