예제 #1
0
    }
}
if (empty($params[0])) {
    $params[0] = 'article';
}
$action = isset($params[1]) ? $params[1] : 'index';
switch ($params[0]) {
    case 'article':
        $controller = new \App\Controllers\Article();
        break;
    case 'admin':
        $controller = new \App\Controllers\Admin();
        break;
    default:
        $controller = new \App\Controllers\Error();
        $action = 'error404';
        Logger::instance()->save('Ошибка 404: Введен не существующий адресс');
}
try {
    $controller->action($action);
    exit;
} catch (\App\Exception\DB $e) {
    $action = 'DBError';
    \App\Mailer::instance()->send('Ошибка подключения к БД');
} catch (\App\Exception\Error404 $e) {
    $action = 'error404';
} finally {
    $controller = new \App\Controllers\Error();
    $controller->action($action);
    Logger::instance()->save($e->getMessage());
}
예제 #2
0
<?php

require __DIR__ . '/../autoload.php';
// При наличии одного поля в URI оно рассматривается как имя действия
// Если их больше, то предшествующие поля рассматриваются как
// имя контроллера
preg_match('~^/?([\\w|/]+)?/(\\w+)/?(\\?.*)?$~', $_SERVER['REQUEST_URI'], $matches);
$parsedControllerName = str_replace('/', '\\', ucwords($matches[1], '/'));
$parsedActionName = ucfirst($matches[2]);
$controllerName = '\\App\\Controllers\\' . ($parsedControllerName ?: 'News');
$actionName = $parsedActionName ?: 'Index';
try {
    PHP_Timer::start();
    $controller = new $controllerName();
    $controller->action($actionName);
} catch (\App\Exceptions\DB $e) {
    switch ($e->getCode()) {
        case 1:
            \App\Logger::instance()->alert(null, ['exception' => $e]);
            break;
        case 2:
            \App\Logger::instance()->error(null, ['exception' => $e]);
            break;
        default:
            \App\Logger::instance()->error(null, ['exception' => $e]);
    }
    (new \App\View())->display('../App/Templates/Errors/Db.php', ['error' => $e->getCode()]);
} catch (\App\Exceptions\NotFound $e) {
    \App\Logger::instance()->info(null, ['exception' => $e]);
    (new \App\View())->display('../App/Templates/Errors/NotFound.php', ['page' => $e->getMessage()]);
}