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.

questionAnswers(2)

yourAnswerToTheQuestion