You've already forked php-flasher
mirror of
https://github.com/php-flasher/php-flasher.git
synced 2026-04-05 12:32:55 +01:00
60 lines
1.2 KiB
PHP
60 lines
1.2 KiB
PHP
<?php
|
|
|
|
namespace Flasher\Prime\Stamp;
|
|
|
|
use Flasher\Prime\Envelope;
|
|
|
|
final class UuidStamp implements StampInterface
|
|
{
|
|
/**
|
|
* @var string
|
|
*/
|
|
private $uuid;
|
|
|
|
/**
|
|
* @param string|null $uuid
|
|
*/
|
|
public function __construct($uuid = null)
|
|
{
|
|
$this->uuid = $uuid ?: sprintf(
|
|
'%04X%04X-%04X-%04X-%04X-%04X%04X%04X',
|
|
mt_rand(0, 65535),
|
|
mt_rand(0, 65535),
|
|
mt_rand(0, 65535),
|
|
mt_rand(16384, 20479),
|
|
mt_rand(32768, 49151),
|
|
mt_rand(0, 65535),
|
|
mt_rand(0, 65535),
|
|
mt_rand(0, 65535)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @param Envelope|Envelope[] $envelopes
|
|
*
|
|
* @return array<string, Envelope>
|
|
*/
|
|
public static function indexWithUuid($envelopes)
|
|
{
|
|
$envelopes = is_array($envelopes) ? $envelopes : func_get_args();
|
|
|
|
$map = array();
|
|
|
|
foreach ($envelopes as $envelope) {
|
|
$uuid = $envelope->get('Flasher\Prime\Stamp\UuidStamp')->getUuid();
|
|
|
|
$map[$uuid] = $envelope;
|
|
}
|
|
|
|
return $map;
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
public function getUuid()
|
|
{
|
|
return $this->uuid;
|
|
}
|
|
}
|