php – 动态类方法按数组值调用链接
发布时间:2020-12-13 17:14:21 所属栏目:PHP教程 来源:网络整理
导读:例如,我有MyClass类: Class MyClass { public function method_1() { return $this; } public function method_2() { return $this; } public function method_n() { return $this; }} 我有一系列函数及其参数: $array = array( 'method_1' = array( '0' =
例如,我有MyClass类:
Class MyClass { public function method_1() { return $this; } public function method_2() { return $this; } public function method_n() { return $this; } } 我有一系列函数及其参数: $array = array( 'method_1' => array( '0' => 'first_argument','1' => 'second_argument','2' => 'nth_argument',),'method_2' => array( '0' => 'first_argument',); 如何从链中的数组调用MyClass方法? $result = $my_class->$array['method_1']($array['method_1'][0],$array['method_1'][0]) ->$array['method_1']($array['method_2'][0],$array['method_2'][0]) ->$array['method_n']($array['method_n'][0],$array['method_n'][0]); 例如: foreach($array as $function => $args) { // build chain here and execute after foreach } 那么,主要的问题是如何用链中的参数调用无限和未知数量的类函数?谢谢! 解决方法
将$array [‘method_ *’]放入{}括号中:
$result = $my_class->{$array['method_1']}($array['method_1'][0],$array['method_1'][0]) ->{$array['method_1']}($array['method_2'][0],$array['method_2'][0]) ->{$array['method_n']}($array['method_n'][0],$array['method_n'][0]); 如果我注意到,尽管PHP允许这样做,但为了代码可读性和可靠性,您应该重新考虑动态链调用.它可能会节省你几行,但可能会在以后的调试中引起一些麻烦 //附录: foreach ($array as $method => $args) { call_user_func_array(array($my_class,$method),$args); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |