PHP中三个点(...)是什么意思?

新手上路,请多包涵

在我的服务器上安装 Magento 2 时,出现错误。调查代码后发现有三个点( ... ),这是产生错误。我包括了我在下面找到的代码:

 return new $type(...array_values($args));

这个运算符叫什么,它的用途是什么?

原文由 abu abu 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

在 PHP 中实际上称为 ... 运算符,但在其他语言中称为 splat 运算符。来自 2014 年 LornaJane 关于该功能的博客文章

此功能允许您为函数捕获可变数量的参数,如果您愿意,还可以结合传入的“正常”参数。举个例子最容易看出:

 function concatenate($transform, ...$strings) {
  $string = '';
  foreach($strings as $piece) {
      $string .= $piece;
  }
  return($transform($string));    }

echo concatenate(“strtoupper”, “I’d”, “like”, 4 + 2, “apples”);

(这将打印 I'D LIKE 6 APPLES

函数声明中的参数列表中包含 ... 运算符,它的基本意思是“……其他所有内容都应该进入 $strings ”。您可以将 2 个或更多参数传递给此函数,第二个和后续参数将添加到 $strings array ,准备使用。

原文由 Saumya Rastogi 发布,翻译遵循 CC BY-SA 4.0 许可协议

PHP 8.1 中,这种语法“ (...) ”被用作创建可调用对象的新方法。

PHP 8.1 之前:

 $callable = [$this, 'myMethod'];

PHP 8.1 之后:

 $callable = $this->myMethod(...);

来源: https ://wiki.php.net/rfc/first_class_callable_syntax

原文由 jawira 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题