$control = array_shift($uri_parts); // alias контроллера if (count($uri_parts) >= 1) { $action = array_shift($uri_parts); // alias action } } $ctrl = '\\App\\Controllers\\' . $control; if (!class_exists($ctrl)) { $e = new \App\Exceptions\Err404('Неверный адрес '); $e->setExtParams(['uri' => $_SERVER['REQUEST_URI'], 'ctrl' => $ctrl]); throw $e; } $controller = new $ctrl(); if (!method_exists($controller, 'action' . $action)) { $e = new \App\Exceptions\Err404('Несуществующий адрес '); $e->setExtParams(['uri' => $_SERVER['REQUEST_URI'], 'ctrl' => $ctrl, 'act' => $action]); throw $e; } $controller->action($action); } catch (\App\Exceptions\DB $e) { $err = new \App\Controllers\Error(); $err->actionDbError($e->getMessage()); $logger = new \App\LogUseLib(); $logger->emergency($e->getMessage(), $e->getMess()); } catch (\App\Exceptions\Err404 $e) { $err = new \App\Controllers\Error(); $err->action404($e->getMessage()); $logger = new \App\LogUseLib(); $logger->alert($e->getMessage(), $e->getMess()); }
$ctrl = !empty($pathRev[0]) ? 'App\\Controllers\\' . $pathRev[0] : 'App\\Controllers\\News'; $action = 'Index'; break; case 3: $ctrl = !empty($pathRev[1]) ? 'App\\Controllers\\' . $pathRev[1] : 'App\\Controllers\\News'; $action = !empty($pathRev[0]) ? $pathRev[0] : 'Index'; break; default: $ctrl = !empty($pathRev[2]) ? 'App\\Controllers\\' . $pathRev[2] : 'App\\Controllers\\News'; $action = !empty($pathRev[1]) ? $pathRev[1] : 'Index'; break; } try { $controller = new $ctrl(); if (!method_exists($controller, 'action' . $action)) { throw new \App\Exceptions\Error404(); } $controller->action($action); } catch (\App\Exceptions\Error404 $e) { $error = new \App\Controllers\Error(); $error->action404(); } catch (\App\Exceptions\Core $e) { echo 'Возникло исключение ' . $e->getMessage(); } catch (\App\Exceptions\Db $e) { $error = new \App\Controllers\Error(); $error->error($e->getMessage()); // echo 'Что-то не так с базой ' . $e->getMessage(); } catch (\App\MultiException $e) { $error = new \App\Controllers\Error(); $error->errorForm($e); }