Ir para conteúdo

Arquivado

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

amgarcia

Mvc

Recommended Posts

Bom dia,

 

Estou estudando MVC e tenho algumas dúvidas, tenho num sistema simples como mostrarei abaixo, alguem poderia me dizer como ficaria o sistema usando MVC?

 

Tabela:

CREATE TABLE `cliente` (
  `id` INTEGER(11) NOT NULL AUTO_INCREMENT,
  `nome` VARCHAR(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB;

Interface do Usuário

<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<form id="form1" name="form1" method="post" action="script.php">
  Nome Cliente:<input type="text" name="nome" id="nome" />
  <input type="submit" name="button" id="button" value="Salvar" />
</form>
</body>
</html>

Interface Script

<?
include("banco.php");

$sql = "INSERT INTO cliente(nome) VALUES('".$_POST['nome']."')";
mysql_query($sql);
?>

Valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O index.php do exemplo do william saiu do padrão do MVC

 

Está misturando o view dentro do inicializador.

 

O index.php deve ser apenas um inicializador, um instanciador.

 

Não poderia soltar nenhum tipo de saída de dados.

 

Essa função deve estar no controlador "view".

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos lá.. e 'se formos fazer um FrontController' ?

já li tudo qnto é coisa, mas nada que desse pra aplicar legal ainda..

 

index.php

<?php
	include 'inc/init.inc.php';
?>
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<?php
	//aguardando uma implementação de FrontController descente
	echo FrontController::getCalledController( $pg );
?>
</body>
</html>

view/home.php

<p>Home</p>

view/cliente.php

<form id="form1" name="form1" method="post" action="?ctrl=cliente&action=insert">
  Nome Cliente:<input type="text" name="nome" id="nome" />
  <input type="submit" name="button" id="button" value="Salvar" />
</form>

inc/class/ClienteVO.class.php

<?php
class ClienteVO
{
	/**
	 * atributos da classe
	 */
	private $id, $nome;
	
	/**
	 * métodos setters
	 */
	public function set_id( $id ){
		$this->id = $id;
	}
	public function set_nome( $nome ){
		$this->nome = $nome;
	}
	
	/**
	 * métodos getters
	 */
	public function get_id(){
		return $this->id;
	}
	public function get_nome(){
		return $this->nome;
	}
}//fecha class ClienteVO

inc/class/ClienteDAO.class.php

<?php
class ClienteDAO
{
	/**
	 * método construtor
	 */
	public function __construct(){
		$this->db = Db::getInstance();		
	}
	
	/**
	 * método insert
	 */
	public function insert( ClienteVO $objVO )
	{
		$sql = "INSERT INTO `cliente` 
			(`id`, `nome`) 
			VALUES (
			NULL,
			'{$objVO->get_nome()}' 
			)";
		return $sql;
	}

}//fecha class ClienteDAO

inc/init.inc.php(arquivo retirado de scripts do @Fabyo )

<?php
define('BASE_PATH', realpath(dirname(__FILE__)).'/');

//error_reporting(E_ALL);
ini_set('display_errors', TRUE);

setlocale(LC_ALL, "pt_BR", "pt_BR.iso-8859-1", "pt_BR.utf-8", "portuguese");
date_default_timezone_set('America/Sao_Paulo');
        
set_include_path(implode(PATH_SEPARATOR, array(
        BASE_PATH.'class',
        get_include_path()
)));

/**
 * Faz require do arquivo de configurações
 * edite ele para mudar conexão com o banco de dados
 */
if( !file_exists(BASE_PATH.'config.inc.php') ){
        exit('Erro config.php nao encontrado');
} else {
        require_once BASE_PATH.'config.inc.php';
}

/**
 * função __autoload()
 * Faz include do arquivo da classe no momento em que esta for instanciada
 * @param $class string = classe que foi instanciada
 */
function __autoload( $class ){
	include_once $class.'.class.php';
}
?>

inc/config.inc.php

<?php
	//inicializa o uso de sessões
	header("Content-Type: text/html; charset=ISO-8859-1"); 
	session_start();
	
	
	define('SERVER', 'localhost');
	define('USER', 'root');
	define('PASS', '123');
	define('DB', 'ajax');	
	

	$pg = isset( $_GET['pg'] ) ? $_GET['pg'] : '';
	
	
	#Evitando cache de arquivo
	header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
	header('Last Modified: '. gmdate('D, d M Y H:i:s') .' GMT');
	header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
	header('Pragma: no-cache');
	header('Expires: 0');
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode ajudar hinom ou alguém, e mostrar como seria os bons controllers?

 

lí diversos tópicos e tutoriais, aqui pelo fórum, e por ai.. mas nenhum tinha uma aplicação legal de controllers e nada sobre FrontControllers (sem ZendF).

Compartilhar este post


Link para o post
Compartilhar em outros sites

precisa de um certo tempo pra preparar um simples tutorial, por isso, geralmente indico para ler os fontes de outros frameworks pequenos.

 

assim que tiver tempo postarei no laboratorio de scripts

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.