php - PHP:如何将数组作为函数参数传播
问题描述
我正在尝试使用__callStatic
在我的类中包装对不同静态函数的调用。
当前版本的代码允许我使用具有 0 或 1 个参数的函数来执行此操作:
class test {
public static function __callStatic($name, $args) {
if (method_exists(__CLASS__, $name)) {
echo "it does exist\n";
return forward_static_call([__CLASS__, $name], $args[0]);
} else {
echo "it does not exist\n";
}
}
private static function mfunc($param1, $param2) {
echo "that's my func \n";
echo "$param1\n";
echo "$param2\n";
}
}
test::notafunc("one", 'two');
test::mfunc("one", "two");
但是它会失败,mfunc
因为它有两个参数。调用函数时如何传播不同的参数?
我无法使用新的扩展运算符,因为我被锁定在 PHP 7.2 上。我也不能修改mfunc
,因为我在项目中有太多方法可以改变。
解决方案
扩展运算符在 PHP 7.2 中仍然可用,您所指的是稍微不同的东西(它是关于能够将它用作数组的一部分)。所以你可以使用
return forward_static_call([__CLASS__, $name], ...$args);
作为一个更清晰的版本...
return static::{$name}(...$args);
推荐阅读
- r - 可视化 Prentice、Williams 和 Peterson 间隔时间模型
- excel - 查找最早和最晚的日期并创建带有月份的时间表
- javascript - 计数器不可见
- amazon-web-services - 使用 amazon ses 查找电子邮件提供商
- python - 如何在一个区域中生成大约等距的点?
- go - Fyne passing changing arguments to multiple buttons
- python - 编辑文本文件中的特定列
- python - 按出现次数排序数组 mongodb
- javascript - 使用布尔 React Native 在我的屏幕上更改渲染
- gitlab-ci - gitlab CI 中的变量