За последние 24 часа нас посетили 11794 программиста и 981 робот. Сейчас ищут 102 программиста ...

Ошибка Using $this when not in object context, помогите, пожалуйста

Тема в разделе "PHP для новичков", создана пользователем Hayk Avetisyan, 4 май 2019.

  1. Hayk Avetisyan

    Hayk Avetisyan Новичок

    С нами с:
    9 мар 2019
    Сообщения:
    4
    Симпатии:
    0
    В чем вопрос? Ведь я $this использовал в классе и функция существует
    PHP:
    1. <?php
    2.     class Route {
    3.  
    4.         function start() {
    5.             $controller = 'main';
    6.             $action = 'index';
    7.  
    8.             $route = explode('/', $_SERVER['REQUEST_URI']);
    9.             array_shift($route);
    10.             if(empty($route[0])) header('Location: '.ADDRESS.'am');
    11.             if(preg_match('/^(en|ru|am)$/', $route[0])) define('LANG', $route[0]);
    12.             else $this->errorPage();
    13.             if(!empty($route[1])) $controller = $route[1];
    14.             if(!empty($route[2])) $action = $route[2];
    15.            
    16.             if(file_exists(CONTROLLER.$controller.'.php')) {
    17.                 require(CONTROLLER.$controller.'.php');
    18.                 if(file_exists(MODEL.$controller.'.php')) require(MODEL.$controller.'.php');
    19.                 $controller =  'controller_'.$controller;
    20.                 $controller = new $controller;
    21.                 if(method_exists($controller, $action)) $controller->$action();
    22.                 else $this->errorPage();
    23.             }
    24.             else $this->errorPage();
    25.         }
    26.        
    27.         function errorPage() {
    28.             header('HTTP/1.1 404 Not Found');
    29.             header('Location: '.ADDRESS.LANG.'/404');
    30.         }
    31.     }
    32. ?>
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.184
    Симпатии:
    1.198
    Адрес:
    Лень
    не вижу текста с ошибкой
     
  3. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.504
    Симпатии:
    603
    В тексте ошибке ведь должен быть номер строки
     
  4. Hayk Avetisyan

    Hayk Avetisyan Новичок

    С нами с:
    9 мар 2019
    Сообщения:
    4
    Симпатии:
    0
    Исходя из того какое условие не выполняется, номер строки бывает разным. но всегда код в этом строке такой:
    PHP:
    1. else $this->errorPage();
     
  5. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.504
    Симпатии:
    603
    @Hayk Avetisyan сдаётся мне что вы вызываете метод start() из класса через paamayim nekudotayim, а не как метод объекта.
     
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    10.618
    Симпатии:
    1.110
    Адрес:
    там-сям
    Вася хотел сказать "похоже вы вызываете как ::start() а не как ->start()",
    :)
    --- Добавлено ---
    И таки строку надо находить в сообщении об ошибке, а не исходя из каких-то своих умозаключений.