Código HTML:
$.ajax({
type : "POST",
url : "controllers/FrontController.php",
dataType: "json",
data: {
class : "AnyClass",
funct : "AnyFunction",
param : ParamObject,
}
}).done(function(res){
ok();
}).fail(function(jqXHR, textStatus){
ohoh();
});
Código HTML:
$class = $_POST['class'];
$funct = $_POST['funct'];
$param = $_POST['param'];
$clInstance = _autoload($class);
if ($clInstance) {
foreach ($param as $key => $value)
$clInstance->_set($key, $value);
$res = $clInstance->$funct();
echo json_encode($res);
} else {
echo 'error';
}
function __autoload($class) {
$fname = '../Models/' . $class . '.php';
if (file_exists($fname)) {
require_once $fname;
return new $class();
} else {
return false;
}
}
pues no esta mal la forma de realizarlo pero si deseas un poco más de seguridad puedes enviarlo a un archivo intermedio por ejemplo a un archivo que se llame intermedio, este archivo va a realizar la función de un controlador en base a la jerarquía MVC y de allí mandas a llamar a tu clase, puede ser una opción. 


