¿Cómo funciona el enrutamiento MVC?

Así que empecé a estudiar MVC (MVC real, no MVC de marco) un poco más en profundidad, y estoy intentando desarrollar un marco pequeño. Estoy trabajando leyendo otros marcos como Symphony y Zend, viendo cómo hacen su trabajo e intenté implementarlo yo mismo.

El lugar donde me quedé atascado fue el sistema de enrutamiento 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)"
    }
},

 */

Simplemente no puedo envolver mi cabeza alrededor de ella correctamente. ¿Cuál es el flujo de trabajo de la aplicación desde aquí?

El patrón se genera, probablemente unRoute objeto a ser mantenido bajo elRequest objeto o algo, entonces que? ¿Como funciona?

PD Buscando una respuesta real, bien explicada aquí. Tengo muchas ganas de entender el tema. Apreciaría si alguien se tomara el tiempo para escribir una respuesta realmente elaborada.

Respuestas a la pregunta(2)

Su respuesta a la pregunta