Pouco tempo atrás começamos a adotar um novo padrão, onde basicamente falando, qualquer SQL que for executado em um site ou sistema deve ficar dentro da classe. Para cada tabela existe uma classe, por exemplo para a tabela “usuario”, o nome da classe passa a ser “Usuario”.
Ok, mas qual a vantagem em fazer isso?
- Como todo SQL fica confinado dentro da classe, caso queira fazer migração de banco de dados, basta alterar dentro das classes, não precisando sair catando SQL pelos arquivos PHP.
- Padronização dos SQL’s e métodos que retornam ou inserem no banco. Lembrando que essa padronização acaba obrigando o programador a fazer de uma única forma.
- Pode ser criado um gerador de códigos para esse padrão, pois como é feito de forma única, não precisa-se mais criar classes, dessa forma o programador, foca boa parte de seu tempo na regra de negócio (Obs.: Esse gerador de códigos está quase pronto, e está sendo feito por Eliton José da Silva, que por sinal está ficando muito bom)
- Pode-se trabalhar com dois programadores em um mesmo módulo do software, onde um pode mexer com a regra de negócio dentro da classe (Esqueci de mencionar que toda regra de negócio deve ficar dentro da classe) e outro no script que chama os métodos da classe só exibindo na tela dados já trabalhados na classe ou executar métodos para inserir dados.
Bom, esses são alguns dos inúmeros benefícios que obterá em usar esse padrão.
Vou colocar alguns exemplos:
No script que instância métodos da classe faremos da seguinte forma para inserir um registro:
session_start();
/* Importando Classes que serão usadas no sistema */
include “../_classe/classeUsuario.php”;
include “../_include/config.php”;
/* Instanciando o Objeto Usuário */
$objetoUsuario = new Usuario();
if($_POST['enviar']) {
$objetoUsuario->setUsuarioLogin($_POST['usuarioLogin']);
$objetoUsuario->setUsuarioNome($_POST['usuarioNome']);
$objetoUsuario->setUsuarioFuncao($_POST['usuarioFuncao']);
$objetoUsuario->setUsuarioEmail($_POST['usuarioEmail']);
$objetoUsuario->setUsuarioSenha($_POST['usuarioSenha']);
$objetoUsuario->setUsuarioTelefone($_POST['usuarioTelefone']);
$objetoUsuario->setUsuarioCelular($_POST['usuarioCelular']);
if($_POST['acao'] == ‘a’) {
$objetoUsuario->setUsuarioCodigo($_POST['usuarioCodigo']);
$objetoUsuario->alteraUsuario();
}
else {
$objetoUsuario->carregaUsuario();
if(count($objetoUsuario->getVetorUsuario()) == 0) {
$objetoUsuario->insereUsuario();
}
else {
?>
Usuário já existe
}
}
unset($_POST['acao']);
?>
Cadastrou com sucesso!
}
Lembrando que esses dados são submetidos por um formulário com o “method=’post’”
Agora vamos para a classe que possui os dois métodos utilizados no script acima:
/***********************************
Autor: Andrey Pedro Lefkum
andrey@andrey.eti.br
www.andrey.eti.br
Classe: Usuário
Classe para ações do usuário no
sistema.
***********************************/
class Usuario {
/* Metodo Construtor */
function Usuario() {
}
/* Fim Metodo construtor */
/* variáveis da classe */
var $usuarioCodigo;
var $usuarioNome;
var $usuarioEmail;
var $usuarioTelefone;
var $usuarioCelular;
var $usuarioLogin;
var $usuarioSenha;
var $resultado;
var $vetorUsuario;
var $ordem;
/* Fim variáveis da classe */
/* Metodos Get’s and Set’s */
function getusuarioCodigo() {
return $this->usuarioCodigo;
}
function setusuarioCodigo($usuarioCodigo) {
$this->usuarioCodigo = $usuarioCodigo;
}
function getUsuarioNome() {
return $this->usuarioNome;
}
function setUsuarioNome($usuarioNome) {
$this->usuarioNome = addslashes($usuarioNome);
}
function getUsuarioEmail() {
return $this->usuarioEmail;
}
function setUsuarioEmail($usuarioEmail) {
$this->usuarioEmail = addslashes($usuarioEmail);
}
function getUsuarioTelefone() {
return $this->usuarioTelefone;
}
function setUsuarioTelefone($usuarioTelefone) {
$this->usuarioTelefone = addslashes($usuarioTelefone);
}
function getUsuarioCelular() {
return $this->usuarioCelular;
}
function setUsuarioCelular($usuarioCelular) {
$this->usuarioCelular = addslashes($usuarioCelular);
}
function getUsuarioLogin() {
return $this->usuarioLogin;
}
function setUsuarioLogin($usuarioLogin) {
$this->usuarioLogin = addslashes($usuarioLogin);
}
function getUsuarioSenha() {
return $this->usuarioSenha;
}
function setUsuarioSenha($usuarioSenha) {
$this->usuarioSenha = md5($usuarioSenha);
}
function getOrdem() {
return $this->ordem;
}
function setOrdem($ordem) {
$this->ordem = $ordem;
}
function getBuscar() {
return $this->buscar;
}
function setBuscar($buscar) {
$this->buscar = $buscar;
}
function getResultado() {
return $this->resultado;
}
function setResultado($resultado) {
$this->resultado = $resultado;
}
function getVetorUsuario() {
return $this->vetorUsuario;
}
function setVetorUsuario($vetorUsuario) {
$this->vetorUsuario = $vetorUsuario;
}
function getUsuarioFuncao() {
return $this->usuarioFuncao;
}
function setUsuarioFuncao($usuarioFuncao) {
$this->usuarioFuncao = $usuarioFuncao;
}
function getSql() {
return $this->sql;
}
function setSql($sql) {
$this->sql = $sql;
}
/* Fim Metodo Get’s and set’s */
/* Metodos de acoes da classe */
function insereUsuario() {
$sql = “INSERT INTO usuario
(usuarioLogin
,usuarioNome
,usuarioSenha
,usuarioTelefone
,usuarioCelular
,usuarioEmail
,usuarioFuncao
)
VALUES
(
‘”.$this->getUsuarioLogin().”‘
,’”.$this->getUsuarioNome().”‘
,’”.$this->getUsuarioSenha().”‘
,’”.$this->getUsuarioTelefone().”‘
,’”.$this->getUsuarioCelular().”‘
,’”.$this->getUsuarioEmail().”‘
,’”.$this->getUsuarioFuncao().”‘
)
“;
$resultado = mysql_query($sql) or die(”alert(’”.mysql_error().”‘);”);
if($resultado) {
$objetoLog = new Log();
$objetoLog->setLogTabela(’usuario’);
$objetoLog->setLogSql($sql);
$objetoLog->setLogDataHora(date(”Y-m-d H:i:s”));
$objetoLog->insereLog();
}
$this->setResultado($resultado);
}
function carregaSql() {
$sql = “SELECT usuarioCodigo
,usuarioLogin
,usuarioNome
,usuarioSenha
,usuarioEmail
,usuarioTelefone
,usuarioCelular
,usuarioFuncao
FROM usuario
WHERE 1 “;
if($this->getUsuarioNome()) {
$sql .= ” AND usuarioNome LIKE ‘%”.$this->getUsuarioNome().”%’ “;
}
if($this->getusuarioCodigo()) {
$sql .= ” AND usuarioCodigo = ‘”.$this->getusuarioCodigo().”‘ “;
}
if($this->getOrdem()) {
$sql .= “ORDER BY “.$this->getOrdem();
}
else {
$sql .= “ORDER BY usuarioNome “;
}
$this->setSql($sql);
}
function carregaUsuario() {
$this->carregaSql();
$sql = $this->getSql();
$resultado = mysql_query($sql) or die(”alert(’”.mysql_error().”‘);”);
while($linha = mysql_fetch_object($resultado)) {
$vetorUsuario['usuarioCodigo'] [$linha->usuarioCodigo] = $linha->usuarioCodigo;
$vetorUsuario['usuarioLogin'] [$linha->usuarioCodigo] = $linha->usuarioLogin;
$vetorUsuario['usuarioNome'] [$linha->usuarioCodigo] = $linha->usuarioNome;
$vetorUsuario['usuarioSenha'] [$linha->usuarioCodigo] = $linha->usuarioSenha;
$vetorUsuario['usuarioTelefone'][$linha->usuarioCodigo] = $linha->usuarioTelefone;
$vetorUsuario['usuarioCelular'] [$linha->usuarioCodigo] = $linha->usuarioCelular;
$vetorUsuario['usuarioEmail'] [$linha->usuarioCodigo] = $linha->usuarioEmail;
$vetorUsuario['usuarioFuncao'] [$linha->usuarioCodigo] = $linha->usuarioFuncao;
}
$this->setVetorUsuario($vetorUsuario);
}
function alteraUsuario() {
$sql = “UPDATE usuario
SET usuarioLogin = ‘”.$this->getUsuarioLogin().”‘
,usuarioNome = ‘”.$this->getUsuarioNome().”‘
,usuarioTelefone = ‘”.$this->getUsuarioTelefone().”‘
,usuarioCelular = ‘”.$this->getUsuarioCelular().”‘
,usuarioEmail = ‘”.$this->getUsuarioEmail().”‘
,usuarioFuncao = ‘”.$this->getUsuarioFuncao().”‘
WHERE usuarioCodigo = “.$this->getusuarioCodigo();
if($this->getUsuarioSenha() != md5(”")) {
$this->alteraSenha();
}
$resultado = mysql_query($sql) or die(mysql_error());
if($resultado) {
$objetoLog = new Log();
$objetoLog->setLogTabela(’usuario’);
$objetoLog->setLogSql($sql);
$objetoLog->setLogDataHora(date(”Y-m-d H:i:s”));
$objetoLog->insereLog();
}
}
function alteraSenha() {
$sql = “UPDATE usuario
SET usuarioSenha = ‘”.$this->getUsuarioSenha().”‘
WHERE usuarioCodigo = ‘”.$this->getusuarioCodigo().”‘ “;
$resultado = mysql_query($sql) or die(mysql_error());
if($resultado) {
$objetoLog = new Log();
$objetoLog->setLogTabela(’usuario’);
$objetoLog->setLogSql($sql);
$objetoLog->setLogDataHora(date(”Y-m-d H:i:s”));
$objetoLog->insereLog();
}
}
/* Fim metodo de acoes */
}
/* Fim classe */
?>
Autor: Andrey Pedro Lefkum
Obs.: Nesse exemplo não cheguei ao nível de explicar o que a Orientação Objetos.