Is my approach structure good?
You code looks fine. One minor issue: in the catch(PDOException $e) branch maybe you want to


log the error (error_log),
show a fancy static error page to the user ("It's not your fault, we have logged the error and we're working on it." or something like this.),
and/or call die().




About the dynamic switch: I would use a whitelist array which prohibit including other files which are not in the array.

$pages['index'] = 'index.php';
$pages['default'] = 'default.php';
$pages['home'] = 'home.php';
$page = '/404.php'
if (isset($pages[$action])) {
    $page = $pages[$action];
}

include $con_dir . '/' . $page;