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;
/**
* Class SequenceSet
* @package Genkgo\Mail\Protocol\Imap\Request
*/
final class SequenceSet
{
* @var array
private $set = [];
* SequenceSet constructor.
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];
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.':*'];