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.
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,
Muito bom!
ResponderExcluir