for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
declare(strict_types=1);
namespace Genkgo\Mail\Protocol\Imap\Request;
final class SequenceSet
{
/**
* @var array<int, mixed>
*/
private $set = [];
private function __construct()
// this constructor is protected in order to force
// a set to have at least one item
}
* @param int $number
* @return SequenceSet
public function withSingle(int $number): self
$set = clone $this;
$set->set[] = $number;
return $set;
* @param int $first
* @param int $last
public function withRange(int $first, int $last): self
$set->set[] = (string)$first.':'.(string)$last;
public function withInfiniteRange(int $first): self
$set->set[] = (string)$first.':*';
* @return string
public function __toString(): string
return \implode(',', $this->set);
public static function all(): self
$set = new self();
$set->set = ['*'];
public static function single(int $number): self
$set->set = [(string)$number];
* @param array<int, int> $numbers
public static function multiple(array $numbers): self
$set->set = \array_map('strval', $numbers);
public static function range(int $first, int $last): self
$set->set = [(string)$first.':'.(string)$last];
public static function infiniteRange(int $first): self
$set->set = [(string)$first.':*'];