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();