so in first part i made 2 object, instantiate two classes (one we generate from createController function)
$loader = new Loader();
$controller = $loader->cre
$this->{$this->action}();
means that the method that should be called comes from the property $this->action
.
$this->action = 'func1';
$this->{$this->action}();
is equivalent to:
$this->func1();
See the PHP documentation of variable variables and variable functions for more examples of this. The braces are needed because $this->$this->action()
would normally be treated as ($this->$this)->action()
.
You can simply put the $this->action
in another local variable and then, call it:
$action = $this->action;
$this->$action();