Sì sono ancora connesso 
Infatti quello che tu dici è tipico dei framework in linguaggi come java, ma non solo di quelli che usano il front-controller
Si tratta di un front-controller molto semplice e atipico, non un array enorme o uno switch...case enorme.
Se la request è questa
oggetto-metodo
Di volta in volta l'oggetto caricato è solo quello in questione.
Il file incluso ha il nome dell'oggetto (faccio una bonifica ovviamente) e il metodo richiamabile (pubblico) è inserito in una lista apposita definita all'interno dell'oggetto stesso
Ti mostro un esempio di front-controller (è ancora sperimentale perchè ho fatto alcune modifiche di recente e potrebbe cambiare nei prossimi giorni, in più non l'ho ancora adattato con la cosa degli eventi di cui si parla qui), è spaghetti e semplice ma svolge il suo compito
Codice PHP:
<?php
define('FRONT_CONTROLLER', 'index.php') ;
define('SITE_ROOT', realpath('.')) ;
define('CLASSES_DIR', SITE_ROOT.'/evt-classes') ;
define('TOOLS_DIR', SITE_ROOT.'/tools') ;
define('TPL_DIR', SITE_ROOT.'/templates') ;
define('EVT_NAME', 'evt') ;
class EvtHandler
{
/*
il prefisso da aggiungere, per questioni di sicurezza
al nome della classe inclusa
*/
var $incPrefix ;
function EvtHandler($includePrefix)
{
$this->incPrefix = $includePrefix ;
}//END constructor
function call($EVT, &$params)
{
list($class, $event) = explode("-", $EVT, 2) ;
$inclusion = CLASSES_DIR."/".$this->incPrefix . strtolower($class). ".php" ;
if( include($inclusion) )
{
$object = new $class() ;
$object->callEvt($event, $params) ;
}
else
{
$this->handleNoClass($class) ;
}
}//END function call
function handleNoClass($class){
die("La classe {$class} non esiste") ;
}
/*
Funzione ausiliaria per la creazione di un evento/link
*/
function linkEvt($url, $event='', $queryStr=array() )
{
$strQstr='' ;
if ( !empty($event) )
{
/*
?evt[classe-metodo]&resto_della_query_string
*/
$event = array( EVT_NAME."[$event]"=>'' ) ;
$queryStr = array_merge($event, $queryStr) ;
}
$queryStr = array_map('rawurlencode', $queryStr) ;
foreach($queryStr as $key => $val)
{
$strQstr .= "{$key}={$val}&" ;
}
$strQstr= "?".$strQstr ;
$url = $url . $strQstr ;
return($url) ;
}//END function linkEvt
/*
Funzione ausiliaria per la creazione di un evento/bottone
*/
function submitEvt($event)
{
/*
evt[classe-metodo]
*/
$evt = EVT_NAME."[{$event}]" ;
return($evt) ;
}
/*
Funzione ausiliaria per un evento/redirect
*/
function HttpCall( $evt, $queryStr =array()){
$host = 'http://'.$_SERVER['HTTP_HOST'] ;
$script = $_SERVER['SCRIPT_NAME'] ;
$httpEvt = str_replace('&', '&', EvtHandler::linkEvt($host.$script, $evt, $queryStr) ) ;
header("Location: {$httpEvt}") ;
}
}//END class
/*
Prepariamo la strada all'output buffering
*/
ob_implicit_flush(0) ;
/*
L'evento intercettato e da eseguire, se assente ne impostiamo uno di default
*/
$currEvent = isset($_REQUEST[EVT_NAME]) ? key($_REQUEST[EVT_NAME]) : "Contatti-getAll" ;
$controller = new EvtHandler('class_') ;
$controller->call( $currEvent, $_REQUEST) ;
?>