已关闭,该问题为opinion-based,目前不接受回答。
**想改进这个问题吗?**更新问题,以便editing this post可以用事实和引用来回答。
4天前关闭。
Improve this question
PHP从5.6开始就支持可变参数函数。当编写一个方法/函数时,什么时候使用可变参数函数比只使用一个标准的array
参数更合适?
已关闭,该问题为opinion-based,目前不接受回答。
**想改进这个问题吗?**更新问题,以便editing this post可以用事实和引用来回答。
4天前关闭。
Improve this question
PHP从5.6开始就支持可变参数函数。当编写一个方法/函数时,什么时候使用可变参数函数比只使用一个标准的array
参数更合适?
1条答案
按热度按时间yjghlzjz1#
我做了一些搜索,但除了关于在性能关键型应用程序中避免使用varargs的建议外,我没有找到一个明确的答案。然而,区分一系列你想作为单个参数传递的东西和一系列你想作为该函数的参数传递的东西可能是有用的。
当我们在PHP API和一些主流PHP项目(如Symfony)中寻找使用变量的例子时,它们似乎分为三类:
1.**格式化/打印函数,接受一个模板/格式化字符串和一系列零个或多个参数来替换到输出中。**在这里,varargs参数可以很容易地调用相同的方法而不需要任何替换,因为它们不需要在这种情况下传入一个空数组(特别有用,因为PHP不支持方法重载)。
1.**动态调度功能(“Hello
operator()
,I'm trying to reachmethodX()
“...).**这些方法接受一系列参数,然后动态地转发给其他方法。varargs参数使得在接受任何 * 其他 * 参数之后很容易接受这些额外的参数,这些参数需要知道如何分派调用,而不必使用func_get_args()
手动解析所有参数。1.**对一个或多个目标进行操作的函数。**这些方法可能通过引用接受一个或多个数组,并执行一些操作,例如从所有元素中删除空格,对数组进行排序,或从数组中过滤空值。或者这些方法可能将任意数量的字符串或数组连接在一起。
因此,可以遵循的指导原则是 * 不 * 使用varargs,除了上面列出的三种情况,因为它们会增加复杂性,但好处有限。