Estoy tratando de crear un esqueleto simple de MVC y estoy atascado con las dependencias.Inyección de dependencia en MVC
Esto es lo que tengo ahora:
$config = new Config();
$database = new Database($config);
$uri = new Uri('article/5');
$request = new Request($uri);
$response = new Response;
$router = new Router;
$dispatcher = new Dispatcher($request, $response, $router);
$dispatcher->dispatch(); // Routing, instantiate controller, execute action, send response
La pregunta es: ¿cómo puede cualquier objeto conseguir el acceso a cualquier tipo de dependencia?
Algunos ejemplos:
- controlador puede necesitar configuración para obtener las opciones de formato de salida.
- Mapper puede necesitar una base de datos para realizar consultas.
- Cualquier controlador/ayudante necesita acceso al registro.
- Helper puede necesitar cualquier número de dependencias (por ejemplo: Uri_Helper necesita un enrutador).
La única posibilidad que se me ocurre es usar el Registro, pero esto viola la Ley de Demeter (pregunte lo que realmente necesita).