a monte, prima ancora del controller, c'è il framework che si occupa appunto di "incollare" tutto questo e fare in modo, tra l'altro, che venga richiamato il giusto controller (di solito grazie ad un parametro passato dalla url, o dalla url stessa).
Esempio pratico, su un sito MVC basato su un framework diffuso come Codeigniter, se io ho una pagina "news" con l'elenco di tutte le news, avrò
nomesito.com/news
come l'utente digita questo indirizzo, si muove il framework che intercetta l'url e cerca dentro la cartella controller un file chiamato news.php con una classe News.
All'interno della classe News cerca una funzione index() che è quella di default.
per la url
nomesito.com/news/dettaglio_news
cercherà come sopra il controller news ma questa volta, avendo una funzione ben precisa specificata nella url, non cercherà index ma dettaglio_news().
Sarai poi tu, nel costruttore del controller, a richiamare il model che ti serve, le librerie e via dicendo.
I framework di solito gli oggetti essenziali (database, sessioni) te li mettono a disposizione in automatico.
Ma non ho capito.. ti stai facendo un MVC da solo?