Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Estou estudando POO (Orientação Objeto) e comecei a fazer um exemplo de cadastro de usuário e gostaria de saber se o que estou fazendo está correto para a metodologia OO.
1º Criei a pagina HTML usuario.html que conterá o formulário para os inputs dos dados.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="[http://www.w3.org/1999/xhtml">](http://www.w3.org/1999/xhtml)
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link href="css/style.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="js/jquery-1.4.2.min.js" charset="ISO-8859-1"></script>
<script type="text/javascript" src="js/jquery.validate.min.js" charset="ISO-8859-1"></script>
<script type="text/javascript" src="js/usuario.js" charset="ISO-8859-1"></script>
<title>Gerenciamento da Carteira de Ações</title>
</head>
<body>
<h2>Cadastro de Usuário</h2>
<form id="usuario" method="post" action="#" />
<label>Nome Completo: </label>
<input type="text" name="nomeCompl" id="nomeCompl" class="name" />
<label>Email: </label>
<input type="text" name="email" id="email" class="name" />
<label>Perfil de Acesso: </label>
<select name="perfil" id="perfil" class="lista">
<option></option>
<option>Administrador</option>
<option>Tester</option>
<option>Gestor</option>
</select>
<label>Login: </label>
<input type="text" name="login" id="login" class="text" />
<label>Senha: </label>
<input type="password" name="senha" id="senha" class="text" />
<input type="submit" name="btn" id="btn" value="Cadastrar" class="botao" />
<div id="resposta"></div>
</form>
</body>
</html>
2º Criei o arquivo usuário.php que irá receber os dados do formulário e chamará a classe Usuario.class.php
<?php
include 'class/Usuario.class.php';
$nome = $_POST['nomeCompl'];
$email = $_POST['email'];
$perfil = $_POST['perfil'];
$login = $_POST['login'];
$senha = $_POST['senha'];
$usuario = new Usuario($nomeCompleto, $email, $perfil, $login, $senha);
/Exemplo utilizando o medoto insertUsuario/
$usuario->insertUsuario();
?><?php
class Usuario{
/Atributos/
public $nomeCompleto;
public $email;
public $perfil;
protected $login;
private $senha;
/*Construtor*/
function __construct($nomeCompleto, $email, $perfil, $login, $senha){
$this->nomeCompleto = $nomeCompleto;
$this->email = $email;
$this->perfil = $perfil;
$this->login = $login;
$this->senha = $senha;
}
/*GETs e SETs*/
/*Metodo de Validação*/
public function validarUsuario(){
/*Aqui logica para validar os dados que está vindo do formulario...*/
}
/*Metodo Insert*/
public function insertUsuario($teste){
/*Aqui logica para inserir o usuario no Banco de dados*/
/* $sql = "INSERT INTO" ........*/
}
/*Metodo Update*/
public function updateUsuario(){
}
}
?>Eu estou estudando PHP com orientação a objetos. Comecei a pouco tempo. Pelo que eu entendi nos meus estudos, a maneira que você tá programando ainda não é orientação a objetos. A classe Usuario tá beleza, já é um começo, mas a página usuario.html não tem nada de OO. Eu estou estudando com os livros "PHP 5: Conceitos, Programação e Integração com Banco de Dados de Walace Soares" e "Programando com Orientação a Objetos (Inclui Design Patterns) de Pablo Dall'Oglio". Indico eles pra você.
Olha só o código-fonte de criação de um formulário:
Código-Fonte:
<?php
/*
* função __autoload()
* Carrega uma classe quando ela é necessária,
* ou seja, quando ela é instancia pela primeira vez.
*/
function __autoload($classe)
{
if (file_exists("app.widgets/{$classe}.class.php"))
{
include_once "app.widgets/{$classe}.class.php";
}
}
// instancia um formulário
$form = new TForm('form_email');
// instancia uma tabela
$table = new TTable;
// adiciona a tabela ao formulário
$form->add($table);
// cria os campos do formulário
$nome = new TEntry('nome');
$email = new TEntry('email');
$titulo = new TEntry('titulo');
$mensagem = new TText('mensagem');
// adiciona uma linha para o campo nome
$row=$table->addRow();
$row->addCell(new TLabel('Nome:'));
$row->addCell($nome);
// adiciona uma linha para o campo email
$row=$table->addRow();
$row->addCell(new TLabel('Email:'));
$row->addCell($email);
// adiciona uma linha para o campo título
$row=$table->addRow();
$row->addCell(new TLabel('Título:'));
$row->addCell($titulo);
// adiciona uma linha para o campo mensagem
$row=$table->addRow();
$row->addCell(new TLabel('Mensagem:'));
$row->addCell($mensagem);
// cria dois botões de ação para o formuláriop
$action1=new TButton('action1');
$action2=new TButton('action2');$action1->setAction(new TAction('onSend'), 'Enviar');
$action2->setAction(new TAction('onView'), 'Visualizar');
// adiciona uma linha para aas ações do formulário
$row=$table->addRow();
$row->addCell($action1);
$row->addCell($action2);
// define quais são os campos do formulário
$form->setFields(array($nome, $email, $titulo, $mensagem, $action1, $action2));
/*
* função onView
* Visualiza os dados do formulário
*/
function onView()
{
global $form;
// obtém os dados do formulário
$data = $form->getData();
// atribui os dados de volta ao formulário
$form->setData($data);
// cria uma janela
$window = new TWindow('Dados do Form');
// define posição e tamanho em pixels
$window->setPosition(300, 70);
$window->setSize(300,150);
// monta o texto a ser exibido
$output = "Nome: {$data->nome}\n";
$output.= "Email: {$data->email}\n";
$output.= "Título: {$data->titulo}\n";
$output.= "Mensagem: \n{$data->mensagem}";
// cria um objeto de texto
$text = new TText('texto', 300);
$text->setSize(290,120);
$text->setValue($output);$window->add($text);
$window->show();
}
/*
* função onSend
* Exibe mensagem "Enviando dados..."
*/
function onSend()
{
global $form;
// obtém os dados do formulário
$data = $form->getData();
// atribui os dados de volta ao formulário
$form->setData($data);
// torna o formulário não-editável
$form->setEditable(FALSE);
// exibe mensagem ao usuário
new TMessage('info', 'Enviando dados...');
}
$page = new TPage;
$page->add($form);
$page->show();
echo '<h2>Código-Fonte:</h2>';
show_source(__FILE__);
?>
hum... então cara, existem várias formas de se fazer uma mesma coisa.
Também tentei começar com POO dessa forma.. bem parecido com oque você fez, é o pattern Active Record
mostre a implementação do método insertUsuario()
como você fez a conexão com o banco de dados ?
isso aqui:
include 'class/Usuario.class.php';num sistema grande, acaba se tornando um estorvo.. procure por __autoload()