Sto creando un framework MVC-ish in PHP. Sto cercando di implementare un contenitore DI per consentire la creazione di oggetti controller (tra gli altri).
Il mio framework MVC è piuttosto tipico. Ogni modulo (o componente se lo si desidera) ha un controller responsabile dell'esecuzione delle richieste. Questi controller di modulo in genere estendono una classe Controller
di base. Tutti i controller accettano Request
e Response
oggetti come argomenti.
La confusione si verifica perché alcuni controller potrebbero aver bisogno di argomenti diversi per funzionare. Ad esempio: molti controller avranno bisogno di un oggetto Database
; I controllori che inviano posta possono aver bisogno di un oggetto Mailer
; mentre un controller che registra i dati potrebbe aver bisogno di un oggetto Log
. Il contenitore DI conterrà le ricette per la creazione di tutti questi controller.
Il mio front controller deve essere in grado di creare uno di questi oggetti controller, come specificato da una richiesta. Inoltre, ogni controller deve essere in grado di creare qualsiasi altro controller.
Come faccio ad avere il controller anteriore e i controller del modulo per accedere al contenitore DI in modo che non provochi una dipendenza dal contenitore DI da parte di ciascun controller?
In realtà non mi importa se il front controller dipende dal contenitore, sono più preoccupato per i controller del modulo.
Grazie,