/** * Преобразует значение полученное из БД в нужный формат, для работы с ним в php * * @param DB_ColumnMeta $metadata * @param $value * * @return mixed */ public function cast_column(DB_ColumnMeta $metadata, $value) { switch (true) { case $metadata->type == 'date': return is_null($value) ? null : Time::parse($value); case $metadata->type == 'timestamp': return is_null($value) ? null : Time::parse($value); case Core_Strings::starts_with($metadata->type, '_'): $arr = array(); foreach (explode(',', Core_Strings::substr($value, 1, strlen($value) - 2)) as $element) { $arr[] = $this->cast_column(new DB_ColumnMeta($metadata->name, Core_Strings::substr($metadata->type, 1), $metadata->length, $metadata->precision), ltrim(rtrim($element, '"'), '"')); } return $arr; case Core_Strings::starts_with($metadata->type, 'int'): return (int) $value; case in_array($metadata->type, array('varchar', 'text')): return (string) $value; case in_array($metadata->type, array('numeric', 'double', 'float')): return (double) $value; default: return $value; } }
public function assign_to_object($form, $object, $name, $data) { $object->{$name} = Time::parse($form[$name]); }
/** * Возвращает значение поля * * @param string $property * * @return mixed */ public function __get($property) { if ($wants_date = $property == 'date' || Core_Strings::ends_with($property, '_date')) { $property = preg_replace('/_date$/', '', $property); } return isset($this->fields[$idx = $this->canonicalize($property)]) ? $wants_date ? Time::parse($this->fields[$idx], Time::FMT_RFC1123) : $this->fields[$idx] : null; }
public static function datetime2timestamp($time, $format = '') { $res = self::s2date($time); if ($res > 0) { return $res; } else { $date = Time::parse($time, $format); return $date ? $date->ts : 0; } }