call_user_func(array($this, $method), $par) from p

2019-05-27 11:45发布

问题:

class Parent
{

  public function __construct($method) {
    call_user_func(array($this, $method), 1);
  }

}

class Child extends Parent
{

  public function __construct($method) {
    parent::__construct($method);
  }

  protected function call_me_on_construct($par) { 
    echo $par;
  }

}

Creating instance of $child = new Child("call_me_on_construct"); I want call_me_on_construct method to be called. The problem is Parent's constructor know nothing about $this. What is better way to do it?

Thank you.

回答1:

It knows about $this. The only error in your code is that you use reserved keyword parent

class Ancestor
{

  public function __construct($method) {
    call_user_func(array($this, $method), 1);
  }

}

class Child extends Ancestor
{

  public function __construct($method) {
    parent::__construct($method);
  }

  protected function call_me_on_construct($par) { 
    echo $par;
  }

}

$c = new child("call_me_on_construct");


标签: php oop