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; }