router
class Router {
const DEFAULT_CONTROLLER = 'main';
const DEFAULT_ACTION = 'index';
private static $URL_ARR = NULL;
private static function parceURL () {
if (self::$URL_ARR !== NULL) return;
$url = explode('?', $_SERVER['REQUEST_URI'])[0]; //вырезаем из адреса то что после знака вопроса
$components = explode('/', $url); //выризаем по слешу
$degree = count(explode('/', URLROOT)); // считаем уровни вложенности
self::$URL_ARR = array_slice($components, $degree); //добавляем компоненты исключая degree
}
public static function getUriParam ($n) {
self::parceURL();
return @self::$URL_ARR($n);
}
public static function Load ($controller, $action = self::DEFAULT_ACTION) {
$controller = ucfirst(strtolower($controller)).'Controller';
$action = 'action_'.strtolower($action);
$controller_path = CONTROLLERS_PATH.$controller.'.php';
if(!file_exists($controller_path)) throw new RouteException('Controller not found', 404);
include $controller_path;
$ctrl = new $controller();
if(!method_exists($ctrl, $action)) throw RouteException('Action not found', 404);
$ctrl->$action();
echo $ctrl->getResponse();
}
public static function Run () {
$controller = self::getUriParam(0);
$action = self::getUriParam(1);
$controller = $controller?$controller:self::DEFAULT_CONTROLLER;
$action = $action?$action:self::DEFAULT_ACTION;
self::Load($controller, $action);
}
}
не могу понять где ошибка, пишет что в 20й строке это return @self::$URL_ARR($n); но что не так не понимаю и выдает ошибку Fatal error: Uncaught Error: Function name must be a string?