add(...$comments); } } public function __debugInfo() { return $this->toArray(); } public function add(string ...$comments): self { foreach ($comments as $comment) { if (!in_array($comment, $this->comments)) { $this->comments[] = $comment; } } return $this; } public function delete(string ...$comments): self { foreach ($comments as $comment) { $key = array_search($comment, $this->comments); if (is_int($key)) { array_splice($this->comments, $key, 1); } } return $this; } #[ReturnTypeWillChange] public function jsonSerialize() { return $this->toArray(); } #[ReturnTypeWillChange] public function getIterator() { return new ArrayIterator($this->comments); } public function count(): int { return count($this->comments); } public function toArray(): array { return $this->comments; } public function mergeWith(Comments $comments): Comments { $merged = clone $this; $merged->add(...$comments->comments); return $merged; } }