/** * Formata um dado de acordo com o tipo e a máscara definido * que será apresentado para o usuário * * @param string $value * @param string $format * @param string $locale * @return string */ public function format($value, $format = null, $locale = null) { if ($format === null) { $format = $this->_mask; } if (!is_object($this->_mapper)) { if ($this->_mapper != '') { $this->_mapper = new $this->_mapper(); } } if (is_object($this->_mapper)) { $columnName = substr($this->_index, strpos($this->_index, '.') + 1); return $this->_mapper->format($value, $columnName, $format, $locale); } else { $type = $this->getType(); if ($type == 'Number' || $type == 'Numeric' || $type == 'Integer') { return ZendT_Type_Number::fromIso($value, $locale)->get($format); } else { if ($type == 'Date' || $type == 'DateTime') { if ($format == '' || $format === null) { if ($type == 'Date') { $format = 'dd/MM/YYYY'; } else { $format = 'dd/MM/YYYY HH:mm:s'; } } return ZendT_Type_Date::fromIso($value, $locale)->get($format); } else { if ($this->_mask) { return ZendT_Format::string($value, $this->_mask); } else { return $value; } } } } }
/** * Formata os dados do array antes de retornar * * @param array|stdClass $row */ private function _formatRow(&$row) { foreach ($row as $key => $value) { $key = strtolower($key); $mapperName = ''; if (isset($this->_columnMappers[$key]) && $this->_columnMappers[$key]['mapper']) { $mapperName = $this->_columnMappers[$key]['mapper']; $columnName = $this->_columnMappers[$key]['column']; } else { $mapperName = $this->_columnMappers['default']['mapper']; $columnName = $key; } if (!$mapperName) { try { throw new ZendT_Exception('Chave com mapper errado ' . $key); } catch (ZendT_Exception $ex) { echo nl2br($ex->getTraceAsString()); } } $_type = $this->_getZendTType($mapperName, $columnName, $value); if ($_type instanceof ZendT_Type) { $_type->setValueFromDb($value); } else { $app = getenv('APPLICATION_ENV'); if ($app == 'production' || $app == '' || 1 == 1) { $_type = new ZendT_Type_Number($value); } else { throw new ZendT_Exception('Não definido o mapeamento para a coluna "' . $key . '" '); } } /** * */ if ($this->_type) { $row[$key] = clone $_type; } else { $row[$key] = $_type->get(); } } }
/** * Transforma o valor para o formato de armazenamento do Banco de Dados * * @param string|int|ZendT_Type_Date|ZendT_Type_Number $value * @return \ZendT_Type_Number */ private function getValueToDb($value) { if ($value instanceof ZendT_Type) { return $value->getValueToDb(); } else { return $value; } }