Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从数组值运行方法_Php_Arrays_Oop - Fatal编程技术网

Php 从数组值运行方法

Php 从数组值运行方法,php,arrays,oop,Php,Arrays,Oop,我有一个由几个类方法填充的数组,这样,我可以随机调用这些方法进行测试。 下面的代码是我正在努力实现的,但是,我只得到了方法的名称,它没有被执行 例如,假设1返回到$methodIndex,则返回func2()而不是Hello func2 PHP中是否有函数可以实现这一点或简单的解决方法 class A{ public function func1() { echo "Hello Func1"; } public function func2() { echo "Hello Fu

我有一个由几个类方法填充的数组,这样,我可以随机调用这些方法进行测试。 下面的代码是我正在努力实现的,但是,我只得到了方法的名称,它没有被执行

例如,假设
1
返回到
$methodIndex
,则返回
func2()
而不是
Hello func2

PHP中是否有函数可以实现这一点或简单的解决方法

class A{

    public function func1() { echo "Hello Func1"; }
    public function func2() { echo "Hello Func2"; }
    public function func3() { echo "Hello Func3"; }

    private $methods = ['func1', 'func2', 'func3'];

    public function get_methods(){ return $methods; }
}

$object = new A();

$methodIndex = mt_rand(0, count($object->get_methods()) - 1);
$object->get_methods()[$methodIndex]."()"; //e.g. $object->func2();

我想您正在寻找(显示的是短数组语法)


我想您正在寻找(显示的是短数组语法)


这将是类似于

$functionName = get_methods()[$methodIndex];
call_user_func(array($object, $functionName))

这将是类似于

$functionName = get_methods()[$methodIndex];
call_user_func(array($object, $functionName))
就这样:-)

就这样:-)


我认为这将为你指明正确的方向:我认为这将为你指明正确的方向:
class A{

    public function func1() { echo "Hello Func1"; }
    public function func2() { echo "Hello Func2"; }
    public function func3() { echo "Hello Func3"; }

    private $methods = ['func1', 'func2', 'func3'];

    public function get_methods(){ return $methods; }

    public function random(){
        $method = $this->methods[rand(0, (count($this->methods) - 1))];

        if(is_callable(array($this, $method))){
            return call_user_func_array(array($this, $method), func_get_args());
            }
        }
    }

$object = new A();

$object->random();