settings[$setting] = $value; return $this; } public function get(int $setting): ?int { return $this->settings[$setting]??null; } public function toBinary(): string { $packed = ''; foreach ($this->settings as $setting=>$value) { $packed .= pack('vV', $setting, $value); } return $packed; } public function fromBinary(string $data): void { for ($n = 0; $n < strlen($data) - 3; $n = $n + 3) { $unpacked = unpack('vsetting/Vvalue', substr($data,$n,3)); $this->set($unpacked['setting'], $unpacked['value']); } } }