Como funciona o roteamento MVC?
Então comecei a estudar o MVC (MVC real, não o MVC de framework) um pouco mais a fundo, e estou tentando desenvolver um framework pequeno. Eu estou trabalhando lendo outros frameworks como Symphony e Zend, vendo como eles fazem o seu trabalho e tentando implementá-lo eu mesmo.
O lugar onde fiquei preso foi o sistema de roteamento de URL:
<?php
namespace Application\Common;
class RouteBuilder {
public function create($name, $parameters) {
$route = new Route($name);
$route->resource = array_keys($parameters)[0];
$route->defaults = $parameters["defaults"];
$notation = $parameters["notation"];
$notation = preg_replace("/\[(.*)\]/", "(:?$1)?", $notation);
foreach ($parameters["conditions"] as $param => $condition) {
$notation = \str_replace($param, $condition, $notation);
}
$notation = preg_replace("/:([a-z]+)/i", "(?P<$1>[^/.,;?\n]+)", $notation);
//@TODO: Continue pattern replacement!!
}
}
/* How a single entry looks like
* "main": {
"notation": "/:action",
"defaults": {
"resource" : "Authentication",
},
"conditions": {
":action" : "(login)|(register)"
}
},
*/
Eu simplesmente não consigo colocar minha cabeça enrolada corretamente. Qual é o fluxo de trabalho do aplicativo daqui?
O padrão é gerado, provavelmente umRoute
objeto a ser mantido sob aRequest
objeto ou algo assim, então o que? Como funciona?
P.S. Procurando uma resposta real e bem explicada aqui. Eu realmente quero entender o assunto. Eu apreciaria se alguém tirasse um tempo para escrever uma resposta elaborada real.