*/ trait ConfigSets { /** * Sets a specific field of an option * * @param string $key * @param string $field * @param mixed $value * @throws \common_exception_InconsistentData * @return boolean success */ public function hashSet($key, $field, $value) { $option = $this->getHashOption($key); $option[$field] = $value; return $this->setOption($key, $option); } /** * Removes a specific field of an option * * @param string $key * @param string $field * @throws \common_exception_InconsistentData * @return boolean */ public function hashRemove($key, $field) { $option = $this->getHashOption($key); if (!isset($option[$field])) { return false; } else { unset($option[$field]); return $this->setOption($key, $option); } } /** * Returns a specific field of an option * * @param string $key * @throws \common_exception_InconsistentData * @param string $field * @return mixed */ public function hashGet($key, $field) { $option = $this->getHashOption($key); return isset($option[$field]) ? $option[$field] : null; } /** * @param string $name * @param mixed|null $default * @return mixed */ abstract public function getOption($name, $default = null); /** * @param string $name * @return boolean */ abstract public function hasOption($name); /** * @param string $name * @param mixed $value */ abstract public function setOption($name, $value); /** * Retroieve an option and ensure it is an array * * @param string $key * @throws \common_exception_InconsistentData * @return array */ private function getHashOption($key) { $option = $this->hasOption($key) ? $this->getOption($key) : []; if (!is_array($option)) { throw new \common_exception_InconsistentData($key . ' is not an array'); } return $option; } }