Criando Classe para Validação de Dados com PHP

Seção para postar os scripts das video aulas, e dos membros do forum

Criando Classe para Validação de Dados com PHP

Mensagempor davidchc » Sex Jun 25, 2010 10:52 am

Aqui estão os arquivos criados na video aula, o código esta todo comentado para uma melhor aprendizado.

Código: Selecionar tudo

<?php

/**
 * Classe Para validação da Dados
 * @author David CHC
 * @version 0.1
 *
 */
class Validacao {

    
/**
     * Atributo que receberá os valores dos dados da validação
     * e o nome do campo
     * @var ARRAY $dados
     */
    
private $dados;
    
/**
     * Atributo que receberá as mensagens de erro
     * @var ARRAY $erro
     */
    
private $erro = array();

    
/**
     * Método que recebe os valores de validação e nome do campo
     * @param STRING $valor
     * @param STRING $nome
     * @return $this (retorna o próprio objeto)
     */
    
public function set($valor$nome) {
        
$this->dados = array("valor" => trim($valor), "nome" => $nome);
        return 
$this;
    }

    
/**
     *  Método que verifica se é o valor é obrigatório
     *  @return $this (retorna o próprio objeto)
     */
    
public function obrigatorio() {
        if (empty(
$this->dados['valor'])) {
            
$this->erro[] = sprintf("O campo %s é obrigatório"$this->dados['nome']);
        }
        return 
$this;
    }

    
/**
     * Método que verifica se o email é válido
     * @return $this (retorna o próprio objeto)
     */
    
public function email() {
        if (!
filter_var($this->dados['valor'], FILTER_VALIDATE_EMAIL)) {
            
$this->erro[] = sprintf("O campo %s só aceita um e-mail válido"$this->dados['nome']);
        }
        return 
$this;
    }

    
/**
     * Método que verifica se a data esta no formato dd-mm-YYYY
     * @return $this (retorna o próprio objeto)
     */
    
public function data() {
        
//99-99-9999
        
if (!preg_match("/^[0-9]{2}\-[0-9]{2}\-[0-9]{4}$/"$this->dados['valor'])) {
            
$this->erro[] = sprintf("O campo %s só aceita no formato 99-99-9999"$this->dados['nome']);
        }
        return 
$this;
    }

    
/**
     * Método que verifica se o telefone está no formato (99)9999-9999
     * @return $this (retorna o próprio objeto)
     */
    
public function tel() {
        
//(99)9999-9999
        
if (!preg_match("/^\([0-9]{2}\)[0-9]{4}\-[0-9]{4}$/"$this->dados['valor'])) {
            
$this->erro[] = sprintf("O campo %s só aceito o formato (99)9999-9999"$this->dados['nome']);
        }
        return 
$this;
    }

    
/**
     * Método que verifica se teve alguma mensagem de erro
     * @return BOOLEANO (true/false) 
     */
    
public function validar() {
        if (
count($this->erro) > 0) {
            return 
false;
        } else {
            return 
true;
        }
    }

    
/**
     * Método que retorna os erros encontrados
     * @return ARRAY $erro
     */
    
public function getErrors() {
        return 
$this->erro;
    }

}
?>


A mesma classe só pastebin: http://pastebin.com/NW84BQiG

Como utilizar:

Código: Selecionar tudo

<?php
/**
 * Verifica se existe um método post
 */
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    
//inclui a classe Validacao.class.php
    
require("Validacao.class.php");
    
//Instancia a classe Validacao
    
$val = new Validacao();
    
//Guarda a Variavel Global $_POST 
    
$p $_POST;
    
//Chama o Método set() atribuitndo o valor e nome do campo, e a verificação
    
$val->set($p['nome'], 'Nome')->obrigatorio();
    
$val->set($p['email'], 'E-mail')->email();
    
$val->set($p['telefone'], 'Telefone')->tel();
    
//Verifica se ocorreu algum erro
    
if ($val->validar()) {
        
        echo 
'Passou';
    } else {
        
//se ocorreu algum erro, lista todos os erros
        
foreach ($val->getErrors() as $erro) {
            echo 
"$erro <br />";
        }
    }
}
?>



Arquivo completo no index.php : http://pastebin.com/2sxEFCQU

Arquivo CSS: style.css
Código: Selecionar tudo
*{margin:0; padding:0}

form{
    width:400px;
    margin:0 auto;
}

form label{
    display:block;
    padding:3px 0;
}
form label span{
    display:block;
    width:80px;
    float:left;
}
form label input{
    padding:3px 0;
}
Avatar de usuário
davidchc
Veterano
 
Mensagens: 3135
Data de registro: Qua Ago 06, 2008 2:11 pm

Re: Criando Classe para Validação de Dados com PHP

Mensagempor Marcio Vinicius » Sáb Jun 26, 2010 10:58 pm

Parabéns David, está ótima essa class, fantastico! E o melhor de tudo, consegui compreender legal!! :D
Avatar de usuário
Marcio Vinicius
Membro Sênior
 
Mensagens: 77
Data de registro: Qui Jun 17, 2010 4:23 pm

Re: Criando Classe para Validação de Dados com PHP

Mensagempor rampazzoweb » Ter Jul 06, 2010 11:06 pm

PARABENS EXCELENTE VIDEO AULA!!
Avatar de usuário
rampazzoweb
Membro Sênior
 
Mensagens: 84
Data de registro: Dom Ago 23, 2009 1:50 pm


Retornar para Banco de Scripts (PHP)

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 2 visitantes