Rotas PHP

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 :joy:, 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 curtida

1 palavra = “.htaccess”

1 curtida