/** * Executa ação para tipos de dados Data, trata como true qualquer data no * formato * dd/mm/aaaa * dd-mm-aaaa * aaaa/mm/dd * @param $prop * @return true */ protected function validateDate(ReflectionProperty $prop) { $value = null; $strEval = '$value = $this->object->' . $prop->getName() . ';'; eval($strEval); if (empty($value)) { return true; } // validao formato da data depois valida se é uma data esta num período válido if (DataValidator::validateFormat($value, "9999-99-99", true)) { $data = array('ano' => substr($value, 0, 4), 'mes' => substr($value, 5, 2), 'dia' => substr($value, 8, 2)); return checkdate($data['mes'], $data['dia'], $data['ano']); } elseif (DataValidator::validateFormat($value, "99-99-9999", true)) { $data = array('ano' => substr($value, 6, 4), 'mes' => substr($value, 3, 2), 'dia' => substr($value, 0, 2)); return checkdate($data['mes'], $data['dia'], $data['ano']); } elseif (DataValidator::validateFormat($value, "99/99/9999", true)) { $data = array('ano' => substr($value, 6, 4), 'mes' => substr($value, 3, 2), 'dia' => substr($value, 0, 2)); return checkdate($data['mes'], $data['dia'], $data['ano']); } else { return false; } }