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;
final class FlagParenthesizedList
{
/**
* @var array|Flag[]
*/
private $flags = [];
* @param array|Flag[] $list
public function __construct(array $list = [])
$this->flags = $list;
}
* @param Flag $flag
* @return FlagParenthesizedList
public function with(Flag $flag): self
$clone = clone $this;
$clone->flags[(string)$flag] = $flag;
return $clone;
public function without(Flag $flag): self
unset($clone->flags[(string)$flag]);
* @return string
public function __toString(): string
if (empty($this->flags)) {
return '';
return \sprintf(
'(%s)',
\implode(' ', $this->flags)
);