Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Prove Yourself

Exemplo MVC

Recommended Posts

No caso de um login seria algo como:

-www (root)
 -classes ->Model
  -usuario.cls.php ->Model
  -dao ->Model
   -usuarioDao.cls.php ->Model
 -autentica.php ->Control
 -formulario.html ->View
 -logado.php ->View

No controler (autentica),estariam presentes suas regras de négocio (checagens e coisas do tipo),no view (formulario.html) sua UI (user-interface),enquanto no model (usuarios.cls.php, usuariosDao.cls.php) você teria as diferentes classes da sua aplicação.

 

usuario.cls.php:

<?php
//Model
class usuario
{
   
	private $login,$senha,$nome;
	
	public function __construct($login, $senha, $nome){
		$this->setLogin($login);
		$this->setSenha($senha);
		$this->setNome($nome);
	}

	public function setLogin($login){
		$this->login =& $login;
	}

	public function setSenha($senha){
		$this->senha =& $senha;
	}

	public function setNome($nome){
		$this->nome =& $nome;
	}

	public function getLogin(){
		return $this->login;
	}

	public function getNome(){
		return $this->nome;
	}
}
?>

usuarioDao.cls.php:

<?php
//Model -> persistencia
class usuarioDao
{
	
	 public function autentica($login, $senha){
		 //Checa os dados no banco de dados
		 //$nome = pego do db
				 //Se......
		 return new usuario($login, $senha, $nome);
	 }
}
?>

formulario.html:

<!--VIEW-->
	<!--Faz os requests-->
<html>
	<head>
		<title>Login</title>
	</head>
	<body>
		<form method="post" action="autentica.php">
			<label for="login">Login:</label>
			<input type="text" name="login" maxlength="12" /><br />
			<label for="senha">Senha:</label>
			<input type="password" name="senha" maxlength="12" /><br />
			<input type="submit" value="logar" /><br />
			<input type="reset" value="apagar" />
		</form>
	</body>
</html>
<!--VIEW-->

autentica.php:

<?php
//Pega os requests,dá um response

require 'classes/dao/usuarioDao.cls.php';
require 'classes/usuario.cls.php';

$login = addslashes($_POST['login']);
$senha = addslashes($_POST['senha']);
if(trim($login) == ''){
	//Response
	die('<font color=\'#ff0000\'>Favor digitar o login</font>');
} else if(trim($senha) == ''){
	//Reponse
	die('<font color=\'#ff0000\'>Favor digitar sua senha</font>');
} else if(strlen($login) > 12) {
	//Response
	die('<font color=\'#ff0000\'>Login deve conter menos de 12 caracteres</font>');
} else if(strlen($senha) > 12){
	//Reponse
	die('<font color=\'#ff0000\'>Senha deve conter menos de 12 caracteres</font>');
} else {
	//"Chamada a model"
	$usuarioDao =& new usuarioDao();
	$usuario = $usuarioDao->autentica($login,$senha);
	if($usuario != null){
		session_start();
		$_SESSION['objeto'] = clone($usuario);
		unset($usuario);
		//Response
		header("Location: logado.php");
	} else {
		//Response
	   die('<font color=\'#ff0000\'>Dados não encontrados em nosso banco de dados</font>');
	}
}
?>

logado.php:

<?php
//View
session_start();
if(!empty($_SESSION['objeto'])){
	  echo 'Login:', $_SESSION['objeto']->getLogin(), nl2br("\n");
	  echo 'Nome:', $_SESSION['objeto']->getNome(), nl2br("\n");
} else {
	   die('<font color=\'#ff0000\'>Logue-se primeiro</font>');
}
?>

Meu exemplo ficou ruim,mas dá para dar uma entendida (apesar de não ter seguido a risca...).

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Encontrei na internet um exemplo de MVC:

include_once ("../model/AlunoDAO.php");

class AlunoControle
{
	/* Construtor */
	function AlunoControle()
	{
		session_start();
		
		/* Executa a opção passada pelo formulário atraves da variavel opcao do tipo hidden */
		$opcao = $_POST['opcao'];
		
		switch( $opcao )
		{
			case 'Incluir':
			{
				$model = new AlunoDAO();
				
				$model->setNome( $_POST['nome'] );
				$model->setIdade( $_POST['idade'] );
				$model->setMatricula( $_POST['matricula'] );
				
				if( $model->Incluir() )
				{
					header( "Location: ../view/ok.html" );
				}
				else
				{
					header( "Location: ../view/erro.html" );
				}
				
				break;
			}
			case 'Consultar':
			{
				$_SESSION['nome'] = $_POST['nome'];
				$_SESSION['idade'] = $_POST['idade'];
				$_SESSION['matricula'] = $_POST['matricula'];
				
				header( "Location: ../view/resultado_consulta.php" );
				//print_r( "<META HTTP-EQUIV='Refresh' CONTENT='0;URL=../view/resultado_consulta.php'>" );
				//exit;
				
				break;
			}
			case 'altera_consulta':
			{
				$model = new AlunoDAO();
				
				$model->setCodigo_aluno( $_POST['codigo_aluno'] );
				$result = $model->Consulta_Aluno();
				
				while( $r = mysql_fetch_array( $result ) )
				{
					$_SESSION['codigo_aluno'] = $r[0];
					$_SESSION['nome'] = $r[1];
					$_SESSION['idade'] = $r[2];
					$_SESSION['matricula'] = $r[3];
				}
				
				header( "Location: ../view/altera_deleta.php" );
				
				break;
			}
			case 'Alterar':
			{
				$model = new AlunoDAO();
				
				$model->setCodigo_aluno( $_POST['codigo_aluno'] );
				$model->setNome( $_POST['nome'] );
				$model->setIdade( $_POST['idade'] );
				$model->setMatricula( $_POST['matricula'] );
				
				if( $model->Alterar() )
					header( "Location: ../view/ok.html" );
				else
					header( "Location: ../view/erro.html" );
				
				break;
			}
			case 'Deletar':
			{
				$model = new AlunoDAO();
				
				$model->setCodigo_aluno( $_POST['codigo_aluno'] );
				
				if( $model->Deletar() )
					header( "Location: ../view/ok.html" );
				else
					header( "Location: ../view/erro.html" );
				
				break;
			}
		}
	}
	
	/*
	* Função para extrair dados da consulta que estão na sessão
	*/
	function resultado_consulta()
	{
		$model = new AlunoDAO();
		
		$model->setNome( $_SESSION['nome'] );
		$model->setIdade( $_SESSION['idade'] );
		$model->setMatricula( $_SESSION['matricula'] );
		
		$result = $model->Consulta();
		
		if( mysql_num_rows( $result ) > 0 )
		{
			$resposta = "<table border='1'><tr><th>Código</th><th>Nome</th><th>Idade</th><th>Matrícula</th></tr>";
			
			while( $r = mysql_fetch_array( $result ) )
			{
				$resposta = $resposta . "<tr><td>".$r[0]."</td><td><a href=java script:alterar('".$r[0]."');>".$r[1]."</a></td><td>".$r[2]."</td><td>".$r[3]."</td></tr>";
			}
			
			$resposta = $resposta . "</table>";
		}
		else
			$resposta = "Não foi encontrado nenhum dado.";
		
		return $resposta;
	}
}

$controle = new AlunoControle();
?>
Este é apenas o controle... Ele está correto?

Este código veio daqui: http://www.web4u.eti.br/2007/08/13/exemplo...-em-php-basico/

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não...não tinha prestado muita atenção e nem visto os scripts do site que mandou.

Se trata do controler,e não do model!

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.