Sie sind auf Seite 1von 4

Arquitetura MVC

Autor/fonte: Marcus Cavalcanti E-mail/Url: http://www.revistaphp.com.br/artigo.php?id=50 Tags: [ mvc ] [ Indicar a um amigo ] [ Translate to english ] [ Imprimir ] Tweet Uma coisa que percebo em muitos programadores PHP a falta de preocupao quanto a questes de padres e organizao de cdigo, esses quesitos so essencias para uma aplicao slida e com grande escalabilidade (facilidade de expanso). Acredito que isso se deve ao fato de o PHP ser uma linguagem muito "livre" que permite que os programadores no se preocupem com questes que um programador Java j tem no sangue, por exemplo. Enfim, sem mais ladainhas, falaremos hoje sobre a arquitetura MVC. Este artigo ter uma viso mais conceitual do que prtica, contudo tentarei exemplificar os fatos com alguns cdigos e algumas indicaes. Gostaria de acrescentar que se faz por necessrio um conhecimento, mesmo que bsico, de OO. O conceito MVC (Model View Controller) na traduo : Modelo, Viso e Controle. Alguns devem estar se perguntando: Mas que diabos Modelo, Viso e Controle? Vamos l: . Viso: a camada de visualizao da sua aplicao, onde ela apenas apresenta o que foi obtido atravs do controle. Eu diria que seria que o que chega ao usurio final, a parte visual, de interface. A viso no deve ter nenhuma lgica de cdigo, apenas a exibio dos dados; . Controle: onde sero processadas todas as requisies feitas atravs da interface (Viso). O controle tambm acessa o Modelo afim de obter determinadas informaes. Toda lgica da aplicao (validaes, atribuies, etc) feita no Controle. Eu diria que o controlle o gerenciador da sua aplicao; . Modelo: o modelo da sua aplicao, onde so definidos propriedades e atributos dos seus personagens. Na maioria dos casos existe ainda uma camada de persistncia dos dados (DAO usa isso, falaremos sobre DAO nos prximos artigos), mas excepcionalmente neste artigo a nossa persistncia ser feita no Modelo. Aps explicado quem quem nesse tal de MVC, vamos atravs de exemplos prticos ilustrar algumas situaes.

Imagem o seguinte cenrio: Uma aplicao que deva fazer a insero, edio, remoo e listagem de usurios. Algo bem simples, mas que servir para exemplificar como poderamos usar o MVC. Ento vamos a a nossa camada de visualizao (View) para listagem de usurios: Arquivo View.php:
<?php require_once("Controller.php"); ?> <?php $c = new Controller(); ?> <h3>Listagem de Usurios</h3> <br><br> <table cellspacing="0" cellpadding="0" border="0"> <tr> <td width="100">ID</td> <td width="200">Nome</td> <td width="200">sobrenome</td> <td width="200">Email</td> </tr> <?php for ($i = 0; $i < count($c->users); $i++) { ?> <tr> <td width="100"><?php echo $c->users[$i]->id;?></td> <td width="200"><?php echo $c->users[$i]->name;?></td> <td width="200"><?php echo $c->users[$i]->lastname;?></td> <td width="200"><?php echo $c->users[$i]->email;?></td> </tr> <?php } ?> </table>

Agora vamos para a nossa classe de controle. A mesma tera apenas o trabalho de carregar os usurios para a nossa classe de visualizao atravs do nosso modelo de usurios. Arquivo Controller.php:
<?php require_once("UsersModel.php"); require_once("ConnectDB.php"); Class Controller { var $users; function Controller ($action = null) { if (empty($action)) { $this->users = new Users(); $this->users = $this->users->loadAll(); } } } ?>

Agora vamos a nossa classe Modelo, teremos um modelo de usurios (personagem em questo). Poderamos ter um modelo de carros, avies, animais, etc. Arquivo UsersModel.php:
<?php Class var var var var Users { $id; $name; $lastname; $email;

function getId () { return $this->id; } function setId ($id) { $this->id = $id; } function getName () { return $this->name; } function setName ($name) { $this->name = $name; } function getLastname () { return $this->lastname; } function setLastname ($lastname) { $this->lastname = $lastname; } function getEmail () { return $this->email; } function setEmail ($email) { $this->email = $email; } function loadAll () { $query = "SELECT * FROM users ORDER BY name ASC"; $result = pg_query($query); while ($array = pg_fetch_array($result)) { $user = new Users(); $user->setId($array['uid']); $user->setName($array['name']); $user->setLastname($array['lastname']); $user->setEmail($array['mail']); $userArr[] = $user; } return $userArr; }

} ?>

Bem, como vocs viram, o que a metodologia MVC sugere justamente organizao, onde camada fica responsvel pelo que ela realmente deve fazer.

Das könnte Ihnen auch gefallen