我在JavaScript中使用扩展语法,但它们在PHP中使用了什么?在我尝试过的所有情况下,它都像通常的数组一样。我找不到它有什么用处吗?
(我知道它是如何工作的,只是要求一个有用的例子,它比数组更有用)
答案 0 :(得分:4)
扩展运算符(...
)将数组(或通常为Traversable
)转换为参数列表,反之亦然。如果你正在寻找比这更花哨的东西,那你就不走运了:Javascript implementation只是更强大,因为它也将对象表达式转换为键值对,反之亦然。
你怎么用这个?好吧,请参考original RFC定义它的一些实际例子:
我个人使用它是因为第一点。如RFC中所述:
...参数解包语法比call_user_func_args快3.5到4倍。这解决了性能问题。基准代码和结果。
您可能还会问为什么 PHP没有像Javascript那样实现对象解包。这也在RFC中得到了回答:
为了确保与命名参数的向前兼容性,解包操作符不支持字符串键。如果在解包期间遇到字符串键,则抛出可恢复的错误。如果使用自定义错误处理程序忽略错误,则不会解压缩其他参数,但仍会发生调用。
我个人发现这是一个陷阱,这就是我对此RFC投弃权票的原因。