php – 将参数传递给可调用函数
发布时间:2020-12-13 21:55:25 所属栏目:PHP教程 来源:网络整理
导读:我似乎无法让这个工作.我有一个函数,它接受一个我想调用的参数. protected function testFunc($param) { echo $param;}protected function testCall(callable $testFunc) { call_user_func($testFunc);}public function testProg($param) { $this-testCall([
我似乎无法让这个工作.我有一个函数,它接受一个我想调用的参数.
protected function testFunc($param) { echo $param; } protected function testCall(callable $testFunc) { call_user_func($testFunc); } public function testProg($param) { $this->testCall([$this,'testFunc']); } 我试过了 $this->testCall([[$this,'testFunc'],$param]); 和 $this->testCall([$this,'testFunc($param)']); 和 $this->testCall('TestClass::testFunc($param)); 闭包是我唯一的选择,或者如何将参数传递给可调用函数 解决方法
要调用方法(在您的示例函数中是类方法),您必须使用以下语法:
protected function testCall( $testFunc ) { call_user_func( array( $this,$testFunc ) ); } 要传递参数,您必须使用以下语法: protected function testCall( $testFunc,$arg ) { call_user_func( array( $this,$testFunc ),$arg ); } (...) $this->testCall( 'testFunc',$arg ); 要传递多个参数,必须使用call_user_func_array: protected function testCall( $testFunc,array $args ) { call_user_func_array( array( $this,$args ); } (...) $this->testCall( 'testFunc',array( $arg1,$arg2 ) ); 编辑: 上面的代码工作正常,但是 – 在评论中很快就注意到了 – 前面的代码: protected function testCall( callable $testFunc,$arg ) 在上述情况下不起作用. 要使用它,必须修改上述方法和调用: protected function testCall( callable $testFunc,$arg ) { call_user_func( $testFunc,$arg ); } (...) $this->testCall( array( $this,'testFunc'),$arg ); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |