Home » Php » php – Call method by string?

php – Call method by string?

Posted by: admin April 23, 2020 Leave a comment

Class MyClass{
  private $data=array('action'=>'insert');
  public function insert(){
    echo 'called insert';

  public function run(){

This doens’t work:


only possibilites is to use call_user_func(); ?

How to&Answers:



You can do it safely by checking if it is callable first:

$action = $this->data['action'];
if(is_callable(array($this, $action))){
    $this->default(); //or some kind of error message


Reemphasizing what the OP mentioned, call_user_func() and call_user_func_array() are also good options. In particular, call_user_func_array() does a better job at passing parameters when the list of parameters might be different for each function.

    array($this, $this->data['action']),