0

I have an array $run that hold $run[0] - class name and $run[1] - class method to run and i want to be able to do this :

// this is working ok
$class = new $run[0]();
// this is error
$class->$run[1]();

What is the best and most elegant way of doing this ?

Thanks

123onetwothree
  • 636
  • 1
  • 8
  • 17

1 Answers1

1

Add {} around $run[1]: This uses an anonymous class which is available since PHP >= 7.0

<?php
$run = [];
$run[0] = new Class {

    public function myMethod(){
        return 'Hello world';   
    }

};
$run[1] = 'myMethod';


$class = new $run[0]();
echo $class->{$run[1]}(); //Returns Hello world
Daan
  • 12,099
  • 6
  • 34
  • 51