*/ private $book; /** * @param array $book */ public function __construct(array $book = []) { $this->book = $book; } /** @return self */ public static function default() { return new self; } /** * @param string $id * @param _Data $data * @return self */ public function setting($id, array $data) { $book = $this->book; $book[$id] = $data; return new self($book); } /** * @param string $id * @return _Data|null */ public function lookup($id) { if (isset($this->book[$id])) { return $this->book[$id]; } return null; } }