Jump to content


Photo

Técnica De Desenvolvimento Em 5 Camadas


  • Faça o login para participar
2 replies to this topic

#1 Paulo Candango

Paulo Candango

    Novato no fórum

  • Usuários
  • 6 posts
  • Sexo:Não informado

Posted 02/03/2010, 13:50

Pessoal, desenvolvemos aqui um módulo didático de progromação em várias camadas, no caso a aplicação está escrita em PHP, gostaria que havaliassem oque está bom e o que pode ser melhorado. Segue o esquema.

Dividimos a aplicação em 5 camadas: visão, controle, modelo, negócio e persistência.



1. na Visão eu chamo o Controle, veja:

	$enqController = new EnqueteController(null, null, 1); //Passando o tipo de enquete que eu quero, no caso seria 1
	$tmp = $enqController->consultaEnquete();
	echo $tmp->getTitulo()."<br />";
	
	foreach($tmp->getOpcoes() as $obj){
		echo $obj->getDescricao()."<br />";
	}



2.3. O Controller recebe, instancia um Model e joga para a camada de Negócio:

	class EnqueteController {
		
		public $enqueteModel;
		public $enqueteBO;
		
		public function __construct($id, $titulo, $idTag){
			
			$this->enqueteModel = new EnqueteModel();
			$this->enqueteModel->setId($id);
			$this->enqueteModel->setTitulo($titulo);
			$this->enqueteModel->setIdTag($idTag);

			$this->enqueteBO = new EnqueteBO();
			
		}
		
		public function consultaEnquete() {
			
			$tmpEnquete = new EnqueteModel();
			$tmpOpcoes = new OpcoesController();
			
			$tmpEnquete = $this->enqueteBO->consultaEnquete($this->enqueteModel);
			$tmpEnquete->setOpcoes($tmpOpcoes->consultaOpcoes($tmpEnquete));

			return $tmpEnquete;

		}
		
	}



4. A camada de negócio recebe, trata as regras de negócio que nesse caso não tem nenhuma e passa para a Persistência:

	class EnqueteBO {
		
		private $enqueteDAO;
		
		public function __construct(){
			$this->enqueteDAO = new EnqueteDAO();
		}
		
		public function consultaEnquete($enqueteModel){
			
			return $this->enqueteDAO->consultaEnquete($enqueteModel);

		}
		
	}



5. Que por fim recebe e faz o trabalho de acessar o banco e etc:

	class EnqueteDAO extends GenericDAO {
		
		public function consultaEnquete($enqueteModel){
			
			$sql = "SELECT * FROM tb_enquete WHERE id_enquete = ".$enqueteModel->getIdTag()." LIMIT 1";
			$this->getConexao();
			$resultSet = $this->sql($sql);
			$obj = $this->fetch_object($resultSet);
			
			$tmpEnquete = new EnqueteModel();
			
			$tmpEnquete->setId($obj->id_enquete);
			$tmpEnquete->setTitulo($obj->titulo);
			$tmpEnquete->setIdTag($obj->id_tag);
			$tmpEnquete->setOpcoes($obj->opcoes);
			
			return $tmpEnquete;
			
		}


#2 Grundor

Grundor

    Turista

  • Usuários
  • 39 posts
  • Sexo:Não informado
  • Localidade:Nova Friburgo-RJ
  • Interesses:Aprender mais sobre programação e desenvolvimento de sistemas. Me divertir, compartilhar o que eu sei, fazer amigos e promover a paz mundial^^rsrs

Posted 12/08/2011, 23:28

E no caso de pessoas que utilizam Zend, como vou programar em 5 camadas?
O Zend já possui o Controller, Model e View bem definidos... e quanto a camada de negócios e a DAO?

Estou com meu professor enchendo o saco por causa disso no meu projeto final gostaria de saber como resolvo essa questão com ele. Como posso comprovar pra ele que o PHP 5 + Zend são orientado a objetos e tal.

#3 Édipo Costa Rebouças

Édipo Costa Rebouças

    Veterano

  • Ex-Admins
  • 1079 posts
  • Sexo:Masculino
  • Localidade:Brasil - São Paulo

Posted 23/08/2011, 19:27

O Model do Zend não é bem denifido. o que é bem definido no Zend é a View e o Controller.




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq