/** * 格式化属性值 * 可以通过重载此方法实现自定义格式化逻辑 * * @param string $key 属性名 * @param mixed $value 属性值 * @param array $attribute 属性定义信息 * @return mixed 格式化过后的值 */ protected function normalize($key, $value, array $attribute) { return Types::factory($attribute['type'])->normalize($value, $attribute); }
/** * 把Data实例内的数据,转换为适用于存储的格式 * * @param Data $data * @param array [$options] * @return array */ public function unpack(Data $data, array $options = null) { $defaults = array('dirty' => false); $options = $options ? array_merge($defaults, $options) : $defaults; $attributes = $this->getAttributes(); $record = array(); foreach ($data->pick(array_keys($attributes)) as $key => $value) { if ($options['dirty'] && !$data->isDirty($key)) { continue; } if ($value !== null) { $attribute = $attributes[$key]; $value = Types::factory($attribute['type'])->store($value, $attribute); } $record[$key] = $value; } return $record; }