") * * @var array */ protected $authors = []; /** * @param Author $author */ public function add(Author $author) { $this->authors[] = $author; } /** * @see IteratorAggregate */ public function getIterator() { return new \ArrayIterator($this->authors); } /** * @see Countable */ public function count() { return count($this->authors); } /** * @see ArrayAccess */ public function offsetExists($offset) { return isset($this->authors[$offset]); } /** * @see ArrayAccess */ public function offsetGet($offset) { return $this->authors[$offset] ?? null; } /** * @see ArrayAccess */ public function offsetSet($offset, $value) { if (null === $offset) { $this->authors[] = $value; } else { $this->authors[$offset] = $value; } } /** * @see ArrayAccess */ public function offsetUnset($offset) { unset($this->authors[$offset]); } }