使用动态类名、方法和参数调用静态方法
我有一个包含 4 个条目的 php 数组。我需要使用数组中的数据调用类方法。
$array = array('USER', 'username', 'other', 'test');
我想用它来生成它,
$array[0]::find_by_$array[1]($array[3]);
它必须看起来像
USER::find_by_username(test);
如何将数组值转换为这一行?
正确的语法是什么?
I have a php array with 4 entries. And I need to call a class method using the data in my array.
$array = array('USER', 'username', 'other', 'test');
This I want to use to generate this
$array[0]::find_by_$array[1]($array[3]);
it must look as
USER::find_by_username(test);
How I can convert the array values into this line?
What is the correct syntax?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您可以使用
call_user_func_array
来调用 回调,以数组作为参数:You can use
call_user_func_array
to call a callback with an array as parameters:call_user_func_array
call_user_func_array
您已经非常接近 PHP5.4 的有效语法了。您只需要使用花括号和引号来封装方法名称。 演示
设置:
不使用
call_user_func_array()
的有效现代调用:插值:
串联:
输出:
您试图通过用户名“test”查找用户
@Gumbo 的正确实现将一直工作到 PHP5.0。 演示
You were very close to what is valid syntax as of PHP5.4. You merely need to use curly braces and quoting to encapsulate the method name. Demo
Set up:
Valid modern calls without
call_user_func_array()
:Interpolation:
Concatenation:
Output:
You tried to find a user by username "test"
@Gumbo's correct implementation will work all the way down to PHP5.0. Demo
但这不是管理代码的最干净的方法,没有验证类或方法是否存在,因此可能会失败
But this isn't the cleanest way to manage your code, there's no validation that the class or method exists, so subject to potential failure