attrFormatJson($value, $data, 'store_range'); } /** * 获取器,返回的格式 * * @param string|array $value * @param array $data * @return array */ public function getValueAttr($value, $data) { $value = $value ?: ($data['value'] ?? null); switch ($data['type']) { case 'array': $value = $this->attrFormatJson($value, $data, 'value', true); break; case 'boolean': $value = intval($value) ? 1 : 0; break; case 'int': $value = intval($value); break; case 'float': $value = floatval($value); break; } return $value; } /** * 获取器格式化 json * * @param mix $value * @param array $data * @param string $field * @param bool $return_array * @return array|null */ protected function attrFormatJson($value, $data, $field, $return_array = false) { $value = $value ?: ($data[$field] ?? null); $value = $value ? json_decode($value, true) : ($return_array ? [] : $value); return $value === false ? $data[$field] : $value; } }