/**
  * 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;
     }
 }