Estou precisando mais uma vez da ajuda de vocês.
Estou tentando aprender o padrão MVC, mas estou com dificuldade de entender esse negócio de rotas e URL amigáveis.
Os tutoriais que estou tentando seguir os caras sempre utilizam framework e explicam mais como usar o framework do que o que ele está fazendo.
Queria tentar fazer sem ajuda do framework pra entender como funciona, alguém conhece algum material que explique como fazer e o que está sendo feito, ou poderia dar um exemplo simples de como fazer?
Obrigado.
Simples é um pouco complicado , mas vamos tentar…
Imagine uma página rotas.php por exemplo, onde ela recebe qualquer requisição (seja GET, POST, PUT, DELETE, etc), o sistema sempre vai mandar requisições pra ela…
Tendo isso em mente, essa pagina precisa ter dicas de qual módulo/classe/pacote/qualquer coisa, sem se perder certo? Uma forma rustica é na requisição a essa página passar as dicas (entenda-se parâmetros) por exemplo:
rotas.php?classe=Fornecedor&metodo=listar
Passando essa dica o roteador vai saber o que precisa chamar/carregar:
<?php
$nomeClasse = $_GET['classe'];
$metodo = $_GET['metodo'];
$classe = new $nomeClasse //cuidado aqui!!!
$classe->$metodo(); //e muita atenção aqui!!!
Isso ele fará dinamicamente (usando coisas como reflexão, carregamento de classes dinamicos etc, assunto um pouco mais avançado e pra outro post)…
Se voce precisar chamar uma pagina usando POST por exemplo, bastaria:
<form name="rotas.php" method="post">
<input type="classe" name="Fornecedor">
<input type="metodo" name="cadastrar">
</form>
E na rotas.php deixar algo dessa forma pra entender as dicas passadas:
<?php
$nomeClasse = '';
$metodo = '';
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$nomeClasse = $_POST['classe'];
$metodo = $_POST['metodo'];
} else {
$nomeClasse = $_GET['classe'];
$metodo = $_GET['metodo'];
}
//carregamento de classe e metodo aqui...
Bom, continuando, tendo essa ideia o rotas.php consegue saber quem chamou, o que chamou e como chamou (GET, POST, PUT, etc)…
Quanto a parte de URL amigaveis, imagine isso:
rotas.php/Fornecedor/listar
Ao inves disso:
rotas.php?classe=Fornecedor&metodo=listar
Vc precisa configurar seu servidor web (apache, nginx, etc) para enteder e “converter” o modelo mais simples para o modelo “padrão” que o php entende…
Essa é a forma mais simples que consegui te explicar, mas como vc mesmo viu, não é tão simples assim por envolver vários conceitos e principalmente por mudar bem a forma como fazemos no tradicional (cada página com sua ação) e agora vc entende o porque o pessoal prefere tanto framework por causa desse trabalho braçal que fica para o programador se implementar “puro”, espero ter ajudado…
1 palavra = “.htaccess”