Esempio n. 1
0
 /**
  * 格式化属性值
  * 可以通过重载此方法实现自定义格式化逻辑
  *
  * @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);
 }
Esempio n. 2
0
 /**
  * 把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;
 }