поэтому в первой части я сделал 2 объекта, создаю два класса (один из которых мы создаем из функции createController)
$loader = new Loader(); $controller = $loader->createController(); $controller->executeAction();
и метод executeAction
код:
public function executeAction() { return $this->{$this->action}(); }
мой вопрос берет эту строку кода: $this->{$this->action}()
как вызывается этот метод и зачем использовать фигурные скобки; Пытается выполнить action();
возможно, функция расширенного класса?
$this->{$this->action}();
означает, что метод, который должен быть вызван, исходит из свойства $this->action
.
$this->action = 'func1'; $this->{$this->action}();
эквивалентно:
$this->func1();
Дополнительные примеры этого см. В документации по PHP для переменных переменных и переменных функций . Скобки необходимы, потому что $this->$this->action()
обычно рассматривается как ($this->$this)->action()
.
Вы можете просто поместить действие $this->action
в другую локальную переменную и затем вызвать ее:
$action = $this->action; $this->$action();