@kiberchainik
начинающий найкрутейшЫй програмЁр

Почему выходит ошибка Fatal error: Uncaught Error: Function name must be a string?

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?
  • Вопрос задан
  • 1864 просмотра
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
$URL_ARR у вас может быть (судя по приведенному коду) либо нулл, либо аррэй, зачем вы его вызываете как функцию?

PS: Научитесь пользоваться var_dump, жизнь сразу станет лучше.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы