paulfcdd
@paulfcdd
PHP/Sf/WEB developer

Чем может быть вызвана ошибка PHP Uncaught Error: Using $this when not in object context?

Добрый день, пишу свой "фреймворк" (называю его так для себя, а на деле - обычная самописная фигня, просто пишу чисто для себя, чтобы потренироваться). И столкнулся с проблемой, которую не могу понять.
У меня есть класс App. который является родительским для пользовательских классов и методов, выглядит он так

<?php
namespace App;
use Symfony\Component\Yaml\Yaml;
define('BASE_DIR', __DIR__ . '/../');
class App
{
    /**
     * @var Router
     */
    public $router;

    /**
     * App constructor.
     */
    public function __construct()
    {
        $this->router = new Router();
    }

    public final function run(){
        $this->router->match();
    }

    /**
     * @param string $view
     * @param array|null $parameters
     * @return string
     * @throws \Twig_Error_Loader
     * @throws \Twig_Error_Runtime
     * @throws \Twig_Error_Syntax
     */
    public function render(string $view, array $parameters = null) {
        $twig = new Twig();
        return $twig->render($view, $parameters);
    }

    /**
     * @param string $parameter
     * @return mixed
     */
    public function getParameter(string $parameter) {
        $file = Yaml::parseFile(BASE_DIR . 'config/config.yml');
        $parameters = $file['parameters'];
        return $parameters[$parameter];
    }
}


Так же у меня есть мой пользовательский класс, который вызывается при переходе на главную страницу

<?php
namespace Controller;
use App\App;
class AppController extends App
{

    public function indexAction() {
        return $this->render('index.twig', [
            'foo' => 'bar'
        ]);
    }
}


и, как вы уже догадались из вопроса, я получаю Fatal error Uncaught Error: Using $this when not in object context in /var/www/html/framework/src/Controller/AppController in line 12 ( при вызове $this->render() )
В чем может быть проблема, ведь я просто наследую класс, в котором нету никаких статических методов или свойств?
  • Вопрос задан
  • 7127 просмотров
Решения вопроса 1
BoShurik
@BoShurik
Symfony developer
Вы вызываете метод indexAction статически. Надо сначала создать объект AppController, у которого уже вызывать его
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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