PHP:如何将数组传播为函数参数

时间:2019-11-08 16:59:20

标签: php static-methods

我正在尝试使用__callStatic在类中包装对differents静态函数的调用。

此代码的当前版本使我可以使用具有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有两个参数,它将失败。 调用函数时如何传播不同的参数?

我无法使用新的https://gojs.net/latest/samples/orgChartEditor.html,因为我已锁定PHP 7.2。 我也不能修改mfunc,因为我在项目中有太多更改方法。

1 个答案:

答案 0 :(得分:1)

spread运算符在PHP 7.2中仍然可用,您所指向的内容略有不同(这是关于将其用作数组的一部分)。所以你可以使用

return forward_static_call([__CLASS__, $name], ...$args);

更清晰的版本...

return static::{$name}(...$args);