options[$key]); } /** * Get option by key. * * @param int|string $key Unique option key * * @return mixed Option value * * @since 1.0.0 */ public function getOption(int | string $key) : mixed { return $this->options[$key] ?? null; } /** * Get options by keys. * * @param array $key Unique option key * * @return array Option values * * @since 1.0.0 */ public function getOptions(array $key) : array { $options = []; foreach ($key as $value) { if (isset($this->options[$value])) { $options[$value] = $this->options[$value]; } } return $options; } /** * Updating or adding settings. * * @param int|string $key Unique option key * @param mixed $value Option value * @param bool $overwrite Overwrite existing value * * @return bool * * @since 1.0.0 */ public function setOption(int | string $key, mixed $value, bool $overwrite = true) : bool { if ($overwrite || !isset($this->options[$key])) { $this->options[$key] = $value; return true; } return false; } /** * Updating or adding settings. * * @param array $pair Key value pair * @param bool $overwrite Overwrite existing value * * @return bool * * @since 1.0.0 */ public function setOptions(array $pair, bool $overwrite = true) : bool { if ($overwrite) { $this->options = $pair + $this->options; } else { $this->options += $pair; } return true; } }