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
66 lines
1.3 KiB
PHP
66 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace Flasher\Prime\Storage;
|
|
|
|
use Flasher\Prime\Envelope;
|
|
use Flasher\Prime\Stamp\UuidStamp;
|
|
|
|
final class ArrayStorage implements StorageInterface
|
|
{
|
|
/**
|
|
* @var Envelope[]
|
|
*/
|
|
private $envelopes = array();
|
|
|
|
/**
|
|
* @inheritDoc
|
|
*/
|
|
public function all()
|
|
{
|
|
return $this->envelopes;
|
|
}
|
|
|
|
/**
|
|
* @inheritDoc
|
|
*/
|
|
public function add($envelopes)
|
|
{
|
|
$envelopes = is_array($envelopes) ? $envelopes : func_get_args();
|
|
|
|
foreach ($envelopes as $envelope) {
|
|
if (null === $envelope->get('Flasher\Prime\Stamp\UuidStamp')) {
|
|
$envelope->withStamp(new UuidStamp());
|
|
}
|
|
|
|
$this->envelopes[] = $envelope;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @param Envelope[] $envelopes
|
|
*/
|
|
public function remove($envelopes)
|
|
{
|
|
$envelopes = is_array($envelopes) ? $envelopes : func_get_args();
|
|
|
|
$map = UuidStamp::indexWithUuid($envelopes);
|
|
|
|
$this->envelopes = array_filter(
|
|
$this->envelopes,
|
|
function (Envelope $envelope) use ($map) {
|
|
$uuid = $envelope->get('Flasher\Prime\Stamp\UuidStamp')->getUuid();
|
|
|
|
return !isset($map[$uuid]);
|
|
}
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @inheritDoc
|
|
*/
|
|
public function clear()
|
|
{
|
|
$this->envelopes = array();
|
|
}
|
|
}
|