Páginas

quarta-feira, 5 de setembro de 2012

Modelo de arquitetura para projetos em PHP


Sem sombra de dúvida damos total preferencia a orientação a objetos com mvc no desenvolvimento de sistemas web. Porém esses dias baixei o PHPBB, um sistema de fóruns feito em php. Analisando o código notei um MVC simplificado. (para quem não sabe o que é MVC significa model - view - controller, isso significa divisão de responsabilidades, o código que trata da visualização não pode estar misturado com o código que armazena os dados por exemplo. Isso aumenta a manutenção do softwre).

O modelo que observei foi este: 

- /pasta raiz 
      - /pasta functions 
      - /pasta views 
      - listar_usuarios.php 
      - deletar_usuario.php

Existe uma pasta para as funções, outra para as views e os controlles com as actions ficam na pasta raiz.

Por exemplo, a action listar_usuarios.php seria implementada assim:

Arquivo usuarioDao.php na pasta functions:

<?
function listar(){
   //busca no banco
   return $usuarios;
}
?>

Agora o arquivo da listagem.php na pasta view:

<html>
   <body>
      <table>
         <tr><td>Nome</td></tr>
         <? for ($index = 0; $index < count($usuarios); $index++) { ?>
            <tr>
               <td><?echo $usuarios[$index]['nome'];?></td>
            </tr>
         <?}?>
      </table>
   </body>
</html>

E finalmente o controller, arquivo listar_usuarios.php na pasta raiz:

<?
require_once 'functions/usuarioDao .php';
$usuarios = listar();
require_once 'views/listagem.php';
?>


Para acessar a action basta acessar o arquivo listar_usuarios.php

Embora não tenhamos orientação a objetos temos aqui o MVC. Modificações no html não irão afetar o codigo do banco de dados e vice-versa. É claro que pode-se melhorar com outros padrões, como o front controller, mas para iniciantes em php ou para sistemas pequenos, fica aí a dica de como estruturar seu código.

Nesse outro post eu apresento uma maneira mais elaborada de estrutura de projeto, levando em consideração os padrões de projeto Front Controller  e Command, bem como orientação a objetos.

Atenciosamente,
Gustavo Marques.

Um comentário:

Veja também

Related Posts Plugin for WordPress, Blogger...